use*_*992 3 cocoa-touch objective-c ios
我想改变UISegmentedControl使用此代码的高度:
CGRect frame= mySegmentedControl.frame;
[mySegmentedControl setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, fNewHeight)];
Run Code Online (Sandbox Code Playgroud)
但它不起作用.谁知道为什么?它实际上是有效的,如果我取消检查界面构建器中分段控件的"使用Autolayout"功能,但由于某些原因,分段控件中的项目变得不可点击...
这是问题的旁边,我仍然没有找到一个简单的方法来添加多行文本UISegmentedControl(这里的任何帮助也将不胜感激).
似乎是关于视图周期.
实际上关于3个因素在iOS中布局视图1.自动布局(自iOS6起可用)2.setFrame 3.自动清除掩码
对于你的情况,
autolayout将帮助计算UIView所需的帧(基于NSLayouConstraints)然后将它们排出.
因此,在界面构建器中,如果启用"autolayout",则界面构建器将为该UIView生成NsLayoutConstraints.如果禁用"autolayout",则构建器将为您生成UIView框架.
假设您必须使用autolayout,您必须在正确的时间调整UISegmentedControl的大小
- (void)viewDidLayoutSubview
Run Code Online (Sandbox Code Playgroud)
这是关于视图生命周期.为了简化它,它就像:
updateConstraints - > layout(您最好观看相关的WWDC会话视频以获取详细信息)
您无法更改框架,因为此流程:
通过代码设置新框架 - >查看句柄约束和计算(为UISegmentedControl生成其他框架) - >做布局
对不起这个组织得不好的答案.
| 归档时间: |
|
| 查看次数: |
6807 次 |
| 最近记录: |