zoukankan      html  css  js  c++  java
  • UI基础--UIView常见属性之frame、center、bounds、transframe属性

    屏幕上能看得见摸得着的东西就是UIView,比如屏幕上的按钮、文字、图片,所以UIButton、UILabel、UITextField等等控件都是继承自UIView的,所以都会具有UIView的属性和方法,这里主要学习的是frame、center、bounds、transframe属性。
    //控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
    @property(nonatomic) CGRect frame;
    
    //控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)
    @property(nonatomic) CGRect bounds;
    
    //控件中点的位置(以父控件的左上角为坐标原点)
    @property(nonatomic) CGPoint center;
    
    //可以对控件进行平移、缩放比例和旋转角度
    @property(nonatomic) CGAffineTransform transform;

    对一个控件进行移动、放大、缩小或者旋转就可以用以上的4种属性,看注释也可以知道,transform的作用更大,所以要学好transform。有以下创建方法CGAffineTransformMakeTranslation(平移)、CGAffineTransformMakeScale(缩 放)、CGAffineTransformMakeRotation(旋转)都是相对于控件初始位置的而发生的形变(平移、缩放、旋转);而 CGAffineTransformTranslate(平移)、CGAffineTransformScale(缩放)、 CGAffineTransformRotate(旋转)都是相对于基于CGAffineTransform t参数而发生的形变(平移、缩放、旋转)。这里的radians,弧度,都是180° = M_PI。

    #pragma mark 旋转
    //注意旋转角度必须是弧度,不是角度
    CGFloat angle = M_PI_4;
    //使用CGAffineTransformMakeRotation获得一个旋转角度形变
    //但是需要注意CGAffineTransformMakeRotation的旋转不会自动在原来的角度上进行叠加,所以下面的方法旋转一次以后再点击按钮不会旋转了(下面的移动和缩放也是类似)
    _imageView.transform=CGAffineTransformMakeRotation(angle);
    //而CGAffineTransformRotate说可以在原来的基础上产生一个新的角度
    _imageView.transform = CGAffineTransformRotate(_imageView.transform, angle);
    
    #pragma mark 缩放
    CGFloat scalleOffset=0.9;
    _imageView.transform=CGAffineTransformMakeScale(scalleOffset, scalleOffset);
     _imageView.transform= CGAffineTransformScale(_imageView.transform, scalleOffset, scalleOffset);
    
    #pragma mark 移动
    CGFloat translateY = 30;
    _imageView.transform=CGAffineTransformMakeTranslation(0, translateY);
    _imageView.transform = CGAffineTransformTranslate(_imageView.transform, 0, translateY);

    当然了,这些形变最好还是配上动画才好看。

    [UIView animateWithDuration:1.0 animations:
         ^{
    _imageView.transform = CGAffineTransformTranslate(_imageView.transform, 0, translateY);
    }];//UIView的类方法
  • 相关阅读:
    测开之函数进阶· 第4篇《匿名函数》
    函数进阶· 第3篇《常用内置函数filter()、map()、zip(),怎么用的呢?》
    测开之函数进阶· 第1篇《递归函数》
    测开之数据类型· 第4篇《迭代器、生成器》
    数据类型· 第1篇《元组和列表的性能分析、命名元组》
    Appium上下文和H5测试(二)
    聊聊「测试分工和测试时间」
    Ui Automator 框架和Ui Automator Viewer你会用吗?附送「必备adb命令」拿走不谢 !
    使用Typora+PicGo配置Gitee图床
    持续集成有什么好处?快来看鸭
  • 原文地址:https://www.cnblogs.com/xiaomoge/p/4158517.html
Copyright © 2011-2022 走看看