IOS-UI-transform

/ viewWithTag: 传递一个tag值, view 会根据tag值, 查找对应的view
UILabel *label = [self.view viewWithTag:10];

// 一旦执行了 addSubView: 时候, 就相当于 self.View 对 被添加的view 有一个强指针
[self.view addSubview:button];

以后在定义 UI控件属性的时候使用 weak 修饰符
@property (nonatomic, weak) UIButton *button;

//实例化button
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];

// 为全局属性进行赋值
self.button = button;

/**
property 的本质
set方法
get方法
_属性名称
*/

一. transform 属性 , 做形变
平移:
CGAffineTransformMakeTranslation(10, 0) : 在初始位置的基础上进行平移
CGAffineTransformTranslate(self.redView.transform, 10, 0) 可以多次生效, 以当前状态为基础

旋转:
CGAffineTransformMakeRotation:angle : 是弧度
M_PI_4 : 45°

如果传值为负 : 逆时针进行旋转

CGAffineTransformMakeRotation(M_PI_4)
CGAffineTransformRotate(self.redView.transform, -M_PI_4)

缩放:
CGAffineTransformMakeScale(1.2, 1.2) : x轴上放大1.2倍, y 轴上放大1.2 倍

如果想要缩小, 就传递小于1的值, 如果传递为负值, 这个view 就疯了

CGAffineTransformMakeScale(1.2, 1.2)
CGAffineTransformScale(self.redView.transform, 0.8, 0.5)

// 当view 的transform 发生变化的时候, 会影响到 frame , 所以, 如果做动画, 就用bounds 和 center 来代替
animatable. do not use frame if view is transformed since it will not correctly reflect the actual location of the view. use bounds + center instead

原文地址:https://www.cnblogs.com/DreamLinku/p/5393744.html