UIView作为iOS中界面元素的基类,几乎所有应用中的所有可见元素都是基于UIView的!学习iOS的UI,得从UIView学起!!!
1.Geometry几何(关于位置和大小,显示相关)
@property(nonatomic)CGRect frame;
frame表示UIView的位置和大小,其中位置是以左上角为锚点的。frame的origin表示位置,size表示大小。
@property(nonatomic) CGRect bounds;
bounds表示UIView的边界,即只显示UIView边界以内的部分。
@property(nonatomic)CGPoint center;
center表示UIView的位置,其中位置是以左上角为锚点的,其实就相当于frame的orign。
@property(nonatomic) CGAffineTransform transform;
transform属性表示UIView的变换(变换矩阵),类似于Unity中的transform,设置这个属性可以实现UIView的缩放,位移和旋转。
view3.transform = CGAffineTransformScale(view3.transform, 0.5, 0.5);
view3.transform = CGAffineTransformRotate(view3.transform, 0.2);
view3.transform = CGAffineTransformTranslate(view3.transform, 100, 100);
2.Rendering绘制(透明度,可见性,包含模式等)
@property(nonatomic) BOOL clipsToBounds;
clipsToBounds表示UIView的子view如果超出了UIView的bounds是否被裁减。默认的不裁减的,也就是说如果子view的位置在父view以为的地方也会被显示出来。
@property(nullable, nonatomic,copy) UIColor *backgroundColor UI_APPEARANCE_SELECTOR;
背景色
@property(nonatomic) CGFloat alpha;
透明度,为0时,不可见,同时所有子view也不可见了,不能相应事件,因为它为被从响应链中移除。
@property(nonatomic,getter=isOpaque) BOOL opaque;
不透明的,该属性作用主要是优化绘制的速度,如果opaque为YES,那么绘制时将不会计算混合。节省了绘制时间。
@property(nonatomic) BOOL clearsContextBeforeDrawing;
@property(nonatomic,getter=isHidden) BOOL hidden;
隐藏,为YES时,效果和alpha为0一样。
@property(nonatomic) UIViewContentMode contentMode;
内容的尺寸调整模式。
view.contentMode = UIViewContentmodeScaleToFill;//此时会缩放内容来填满view。
view.contentMode = UIViewContentmodeAspectFit;//在不超出view尺寸范围的内,不改变内容比例的情况下伸缩至最大尺寸。
等等。。。
@property(nonatomic) CGRect contentStretch
contentMode设置了如何伸缩,而contentStretch指定内容的区域进行伸缩(即只对指定部分伸缩),这个属性类似于cocos2d-x中九宫格。3.Hierarchy层级(子view的操作)
- (void)layoutSubviews;
如果UIView的尺寸发生了变化,外观发生改变了会自动调用layoutSubviews.