objective-c - 更改 UISegmentedControl 的高度

标签 objective-c ios cocoa-touch

我正在尝试使用以下代码更改 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/

相关文章:

ios - nw_host_stats_add_src recv 太小,收到 24,预计 28

objective-c - 监听 iOS 应用中的所有触摸事件

objective-c - 寻找 "network interface"系统图标

objective-c - @""和 @"123"之间有什么不同吗?

ios - 如何删除 GPPSignInButton 的默认样式(文本、G+ 图像)以在 iOS 中添加您自己的样式

ios - 从SQLite提取数据并且只想获取列ID的最后一个值

ios - TextField 第一个单元格结果显示在 Tableview 单元格的其他单元格中

ios - UILocalizedIndexCollat​​ion 上的 `sectionForSectionIndexTitleAtIndex` 如何工作? (特别是带有自定义部分标题)它总是返回相同的数字

iphone - 核心数据是否实现了数据映射器模式?

iphone - 检查 Controller 是否在导航 Controller 堆栈的顶部