根据 UIView 的官方文档contentMode
财产:
The content mode specifies how the cached bitmap of the view’s layer is adjusted when the view’s bounds change
这个定义中定义的内容是什么?例如,它是子视图还是当我们为视图定义背景颜色时。
我的第一个猜测是它至少应该适用于视图中的子视图,但是例如下面的代码片段在使用时不会给我预期的结果UIViewContentModeCenter
tag:
UIView* redView = [[UIView alloc] initWithFrame:CGRectMake(80, 80, 150, 200)];
redView.contentMode = UIViewContentModeCenter;
redView.backgroundColor = [UIColor redColor];
UIView* greenView = [[UIView alloc] initWithFrame:redView.bounds];
greenView.backgroundColor = [UIColor greenColor];
[redView addSubview:greenView];
redView.frame = CGRectInset(redView.frame, -5, -5);
[self.view addSubview:redView];
我刚刚设置了一个包含 greenView 的 redView。我还将 redview 的内容模式设置为UIViewContentModeCenter
- 为什么在我编写的代码中,当我更改其父级的框架时,greenView 没有居中?不是什么UIViewContentModeCenter
应该做什么?
感谢您的澄清!
Ps:您可以轻松地在以下位置测试上述代码loadView
一个简单的视图控制器模板项目。
从文档中:
内容模式指定视图层的缓存位图如何
当视图的边界改变时进行调整。
对于图像视图,这是在谈论图像。对于这样的观点
绘制其内容,这里说的是绘制的内容。确实如此
不影响子视图的布局。
您需要查看子视图上的自动调整大小蒙版。
内容模式在这里是一个转移注意力的话题。如果无法实现布局
您需要使用自动调整大小蒙版,然后您需要实施
layoutSubviews 并计算子视图位置和框架
手动。
来自 jrturton 的回答:https://stackoverflow.com/a/14111480/1374512
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)