根据 UIView 关于该contentMode
属性的官方文档:
The content mode specifies how the cached bitmap of the view’s layer is adjusted when the view’s bounds change
这个定义中的内容是什么定义的?例如,它是子视图还是当我们为视图定义了背景颜色时。
我的第一个猜测是,它至少应该适用于视图中的子视图,但例如以下代码片段在使用 UIViewContentModeCenter
标签时不会给我预期的结果:
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
你可以在一个简单的视图控制器模板项目中轻松测试上面的代码。