iOS UI绘图的总结

这周开始写代码了,主要是UI界面相关的,写的途中感觉对UI绘图相关的掌握的不是很好,所以来总结一下

frame和bounds

这两个参数是非常重要的,因为UI界面的位置坐标都跟这个有关的,主要是有以下区别

  • frame:表示的坐标都是相对于父节点的坐标
  • bounds:其中的坐标是关于自身的坐标

frame和bounds中都有origin.x和origin.y,而且还有size.width和size.height,根据上方可以看到,其实size.width和size.height在frame和bounds下的数据都是一样的(因为自身的长度和宽度不管在哪一个坐标系下其实都是一样的),但是origin.x和origin.y是不一样的,bounds下的origin都是0,因为其坐标系是按照自身。很显然,是frame下的情况下就是对于其父节点数值。

代码中常见的初始化方式:

- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;

那么如果有两个元素,B和C都在A坐标系下,如何将C放在A的右边呢,就可以写上这样的代码

UIImageView *b = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
UIImageView *c = [[UIImageView alloc] initWithFrame:CGRectMake(b.frame.origin.x + 10, b.frame.origin.y, 10, 10)];
[a addSubview:b]; // b 和 c 都在同一坐标系下
[a addSubview:c];

可以看到,b和c都在同一个坐标系下,所以c的初始化是按照b的frame.origin.x进行设置

图层

未完待续

此条目发表在Objective-C, UI分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注