zoukankan      html  css  js  c++  java
  • iOS开发 --UIScrollView添加xib自定义view

    实现功能:3步注册流程,点击下一步进入下一个页面,填写信息。

    实现思路:

    1.由于需要在第一个注册页面添加“退出注册”的按钮,所以没有使用UINavigation实现。而是使用一个UIController。

    2.三个注册页长度不同,所以将UIScrollView作为subView添加到VC的view中(UIScrollView的frame长宽写定)。

    3.自定义三个UIView,当需要展示某个view时,根据此view的frame改变UIScrollview的contentViewSize

    具体涉及到:

    1.使用Xib自定义UIView子类(不与某一个VC关联)

    frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)

    bounds指的是:

    2.UIScrollView的frame:

    UIView的三个基本属性

    frame:是CGRect类型,该view在父view坐标系统中的位置和大小,改变视图的frame会改变center。(参照点是父亲的坐标系统)

    center:是CGPoint 类型,指的就是整个视图的中心点,改变视图的center也会改变frame。(相对于父视图)

    bounds:是CGRect类型,该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)

    UIScrollView的属性

    contentSize:滚动试图所能展示的大小,也可以理解为滚动的区域。

    scrollview.frame = (0,0,320,480);
    
    scrollview.contentSize = (320,480*2);//可以上下滚动
    
    scrollview.contentSize = (320*2,480);//可以左右滚动

    因此我先在在VC的xib中确定了UIScrollView的frame。

    而UIScrollView的contentSize需要根据其展示的view变化。

    因为在xib定义view,并将其addSubview到srollview中,此时这个子视图并不会像平时VC的view一样,根据设备的大小具有合适的frame--关联到VC上的view。此时我们定义的“独立”的view,会根据Simulated Metrics中的size变化--因为它是被添加到某个UIScrollview中,它不会根据scrollview的frame.size.wildth确定自己的大小。反而是scrollview根据所展示的内容也就是这个view,确定自己的contentview。

    因此在将subview添加到scrollview上之前,手动定义subview的frame,使其大小不由xib定义。

    此处register2为自定义view

    复制代码
    #import "register2.h"
    #import "Utils.h"
    @implementation register2
    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
     */
    - (void)drawRect:(CGRect)rect {
       self.frame =CGRectMake(0, 0, MAIN_WIDTH, 750);
       self.nextBtn.layer.cornerRadius = 8;
       self.nextBtn.layer.masksToBounds = YES;  
    }
    复制代码

    设置scrollView的contentSize,使其只可以上下滚动,滚动范围正好是子视图的大小。

     [self.scrollview setContentSize:CGSizeMake(self.secondView.frame.size.width, self.secondView.frame.size.height+200)];

    这样即使子视图的Simulated Metrics中的size是iphone 5s,在iphone6p上运行效果仍是正确的。

  • 相关阅读:
    HDU 1175 连连看 (DFS+剪枝)
    CF702F T-Shirts
    UVA12538 Version Controlled IDE
    P2605 [ZJOI2010]基站选址
    P3835 【模板】可持久化平衡树
    CF915E Physical Education Lessons
    P3701 「伪模板」主席树
    P1198 [JSOI2008]最大数
    P3466 [POI2008]KLO-Building blocks
    P3919 【模板】可持久化数组(可持久化线段树/平衡树)
  • 原文地址:https://www.cnblogs.com/Anthea-i/p/4783869.html
Copyright © 2011-2022 走看看