UIView相关

2018-01-16  本文已影响12人  NapoleonY

Property

center,position,anchorPoint

transform

UIView中CGAffineTransform类型属性transform,是定义在二维空间上完成View的平移、缩放、旋转等任务的。

创建基于控件初始位置的变换
创建基于transform参数的变换

sizeToFit函数

Resizes and moves the receiver view so it just encloses its subviews

能够调整当前view,更贴合内部的subviews。以在UILabel中应用为例

UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(300, 20, 30, 10);
label.backgroundColor = [UIColor greenColor];
//label.numberOfLines = 2;
label.text = @"12345670010101010";
[label sizeToFit];    
[self.view addSubview:label];
解析
  1. 如果不设定label.numberOfLinesUILabel会在一行显示所有的内容,如果内容足够多,label会超出屏幕的范围
  2. 如果设定label.numberOfLines=0,并且内容需要多行显示,则每行在width的范围内,显示多行,直到显示出全部内容为止
  3. 如果设定label.numberOfLines=1,则会在一行显示所有内容,如果内容足够多,label会超出屏幕的范围
  4. 如果设定label.numberOfLines=n(n>1),并且内容需要多行显示,则每行在width的范围内,显示n行,如果不能完全显示内容,则最后一行会出现...
  5. 注意:sizeToFit函数必须在label设置完成后调用
与sizeThatFits的区别
总结
  1. 由于这两个方法都会改变"UILabel"的宽度,因此想要UILabel的宽度限定在某一固定宽度的范围内,就需要设定label.numberOfLines为大于1的数即可

removeFromSuperview

view调用了removeFromSuperview后,只是从superView上移除,但是view此时并不为nil(原因:还有指向view的指针,因此view的引用计数不为0),只是不在superView上显示了而已。有需要的话,需要显式设为nil(view = nilview的引用计数为0)。
同样的,如果只是将view显式设为nil(此时view还被superview引用,引用计数不为0),view仍然显示在屏幕上。如果有需要的话,需要调用removeFromSuperview将其从屏幕上移除,此时引用计数变为0

参考

  1. CALayer相关
上一篇 下一篇

猜你喜欢

热点阅读