根据UIView上有关contentMode属性的官方文档:

The content mode specifies how the cached bitmap of the view’s layer is adjusted when the view’s bounds change

在此定义中定义了什么内容?例如,它是 subview 还是当我们为 View 定义背景色时。

我的第一个猜测是,它至少应应用于 View 中的 subview ,但是例如,下面的代码片段在使用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:您可以在一个简单的 View Controller 模板项目的loadView中轻松测试以上代码。

最佳答案



从jrturton的答案到:https://stackoverflow.com/a/14111480/1374512

10-04 23:05