错位的 UISegmentedControl(潜在错误)

Posted

技术标签:

【中文标题】错位的 UISegmentedControl(潜在错误)【英文标题】:Misplaced UISegmentedControl (potential bug) 【发布时间】:2013-11-14 12:30:21 【问题描述】:

我对使用 Apple NSAutolayout 还是很陌生。在最简单的例子中,我可以想象我使用默认模板创建了选项卡式 iPhone 应用程序。然后在第一个视图中,我添加了UISegmentedControl 并向他添加了 2 个约束:“将 X 中心对齐到:SuperView”和“底部空间到:底部布局指南”。然后,当我运行应用程序时,UISegmentedControl 的位置是正确的,但是当我切换到第二个视图并返回时,UISegmentedControl 下降并被UITabBar 隐藏。当我旋转设备时,分段控制位置会回到正确的位置。

有没有办法避免这种情况?

编辑:显示问题的快照很少。

Before http://img824.imageshack.us/img824/6830/o2v2.png After http://img5.imageshack.us/img5/2205/ksb6.png

编辑 2:我找到了临时解决方案。

所有你需要使用属性来存储数据,例如:

@property (nonatomic, assign) CGRect fix_didLoadSegmentedFrame;

然后在viewDidLoad 和处理值更改的函数UISegmentedControl 中添加一行:

self.fix_didLoadSegmentedFrame = self.mapTypeSegmentedControl.frame;

您还应该设置“从因子应用视网膜 3.5 英寸”故事板属性。

【问题讨论】:

我有同样的问题。 +1 很好的问题解释。 【参考方案1】:

尝试在 viewDidLoad 中使用它:

self.tabBarController.tabBar.translucent = NO;

【讨论】:

解决不了问题。透明视图仍然不正确地存在。但它解决了丑陋的“跳跃”所以+1 无论如何,当我在 Storyboard 中将底栏设置为“不透明底栏”时,我很惊讶它仍然无法正常工作。【参考方案2】:

好的。有两种方法可以消除此类问题:

检查选项“在构建时删除” 将UISegmentedControl附加到superview而不是顶层

【讨论】:

以上是关于错位的 UISegmentedControl(潜在错误)的主要内容,如果未能解决你的问题,请参考以下文章

UISegmentedControl 自定义/扩展

如何更改 UISegmentedControl 的字体颜色

带有 UISegmentedControl 的 UIStackView

遍历 UISegmentedControl 值

UISegmentedControl 和 UIPanGestureRecognizer?

UISegmentedControl 不响应触摸