• 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的类方法
  • 相关阅读:
    SQL中关于日期的常用方法
    HTMLDOM中三种元素节点、属性节点、文本节点的测试案例
    MySQL工具:管理员必备的10款MySQL工具
    The GPG keys listed not correct
    Atitit. 真正的全中国文字attilax易语言的特点以及范例
    Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27
    Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27
    Atitit .jvm 虚拟机指令详细解释
    Atitit .jvm 虚拟机指令详细解释
    Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27
  • 原文地址:https://www.cnblogs.com/xiaomoge/p/4158517.html
Copyright © 2020-2023  润新知