错位的 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 的 UIStackView