我正在尝试使用以下代码更改 UISegmentedControl
的高度:
CGRect frame= mySegmentedControl.frame;
[mySegmentedControl setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, fNewHeight)];
但它不起作用。有谁知道为什么?它确实有效,如果我在界面生成器中取消选中分段控件的“使用自动布局”功能,但由于某些原因分段控件中的项目变得不可点击......
这是下一个问题,我仍然没有找到一种简单的方法来将多行文本添加到 UISegmentedControl
(这里的任何帮助也将不胜感激)。
最佳答案
似乎是关于观看周期。
在 iOS 中布局 View 实际上涉及 3 个因素 1. autolayout(自iOS6起可用) 2.设置框架 3.自动调整面膜
对于你的情况,
自动布局将帮助计算该 UIView 所需的框架(基于 NSLayouConstraints),然后对其进行布局。
所以在界面生成器中,如果启用“自动布局”,界面生成器将为该 UIView 生成 NsLayoutConstraints。 如果您禁用“autolayout”,构建器将为您生成一个 UIView 框架。
假设您必须使用自动布局,您必须在正确的时间调整 UISegmentedControl 的大小
- (void)viewDidLayoutSubview
这是关于 View 生命周期的。为了简化它,它就像:
updateConstraints -> layout(详情最好看相关的WWDC Session视频)
您无法更改框架,因为此流程:
通过代码设置新框架 -> 查看句柄约束和计算(为 UISegmentedControl 生成另一个框架) -> 进行布局
对于这个组织不完善的回答,我们深表歉意。
关于objective-c - 更改 UISegmentedControl 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947630/