UIView

作者: junden | 来源:发表于2016-07-31 16:01 被阅读0次

    注:只要有学到新的知识,会不断更新

    UIView的常见属性

    • NSArray *subviews

      • 这个属性获取的是所有子控件
      • 返回的是一个数组,数组元素的顺序决定着子控件的显示层级的顺序(下标越大,越显示在上面)
    • CGRect frame //是一个view在父控件中的位置和大小

      • 里面有2个属性,origin(位置,包含:x,y),size(尺寸:包含width,height)
      • origin中的x,y是以父空间的左上角为原点
    • CGRect bounds //一个view的边界

      • 与frame的区别在于origin是(0,0),如果修改了后,会影响到子控件的位置,
      • bounds相当于一个本地坐标系统,子控件的参考bounds的坐标来定位
    • tintColor UIView新增加了一个tintColor属性,这个属性定义了一个非默认的着色颜色值,其值的设置会影响到以视图为根视图的整个视图层次结构。它主要是应用到诸如app图标、导航栏、按钮等一些控件上,以获取一些有意思的视觉效果。

    • CALayer 图层

      • 所有显示的东西都要放到这个图层上,uiview本身不具备显示功能,是他内部的layer才具有显示功能, 最主要,可以添加动画
      • CALayer是定义在QuartzCore框架中,而UIColor,UIImage是定义在UIKit框架中的,CGImageRef,CGColorRef是定义在CoreGraphics框架中的,
      • QuartzCore和CoreGraphics是可以跨平台使用的,mac和ios都可以用,而UIKit只能用在IOS中,为了保证移植性.
      • 通过操作CALayer对象,可以很方便的调整uiview的一些外观属性,有主层,和内容层
        • 阴影(shadowOpacity不透明度),圆角大小,边框宽度,等
        • 颜色,图层的颜色都是CG(C语音的东西)的,需要通过[UIColor color].CGColor (类似贝瑟路径转CGPath)来转换
        • 边框(border),圆角半径(cornerRadiu)都是设置的是主层边框,
        • 形变 (transform),可以3D的进行改变,用CATransform对应的函数
        • position 是以父控件左上角为原点
        • anchorPoint(锚点),这个点只有layer有,UIview是不同的。以自己本身左上角为原点,类似bounds。他的X,Y的取值范围是0~1,默认为(0.5,0.5)
          • 这个点决定着layer身上哪个点会在position属性所指的位置.旋转的时候,绕着锚点旋转。
      • 改变layer的frame会影响到uiview.frame,两者会保持一致
      • 新建layer[CALayer layer],需要设置frame ,图层只能添加到图层上面,sublayer
        • contents,内容层如果设置图片的话,需要转为CGimage. 如
          layer.contents = (id)[UIImage imageNamed:@"阿狸头像"].CGImage;
    • UIView与CALayer直接的选择

      • UIView是继承于UIrespond可对事件处理,
      • 如果只是为了显示东西,用CALayer会比较高性能.

    UIView的常见方法

    • addSubview

      • 添加一个子控件到指定的父控件中
      • 使用这个方法添加的子控件会放到subviews数组的最后
    • 下面方法可以调整子控件的subview数组中的顺序

    //将子控件view插入到subviews数组的index位置
    -(void) insertSubview:(UIView *) view atIndex:(NSInteger)index;
    
    //将子控件view显示到子控件某一个subview的下面
    - (void)insertSubview:(UIView *)view
             belowSubview:(UIView *)siblingSubview
    
    //将子控件view显示到子控件某一个subview的上面
    - (void)insertSubview:(UIView *)view
             aboveSubview:(UIView *)siblingSubview
    

    UIView的动画方法

    • 只有当view有变化的时候会触发
     [UIView animateWithDuration:2.0 animations:^{
          self.scrollView.contentOffset = CGPointMake(self.scrollView.contentOffset.x,0);
        }];
    

    将会触发动画的代码放心这个block里面

    注意点

    • 不能给成员变量任何一个view命名 loadView 否则会只剩下一个窗口

    • 转换坐标系的时候,要分清楚需要转换的空间的坐标在哪个父控件中,然后转到目标坐标系中。

      • 比如 btn在lockView要转到self中,
           //转换坐标,将在lockView的中心点,转换到self中,
          CGPoint btnCenter = [self.lockView convertPoint:btn.center toView:self];
      

    相关文章

      网友评论

          本文标题:UIView

          本文链接:https://www.haomeiwen.com/subject/oiztsttx.html