错位的UISegmentedControl(潜在的bug)

时间:2013-11-14 12:30:22

标签: ios iphone ios7 uitabbar nslayoutconstraint

我很擅长使用Apple NSAutolayout。在最简单的例子中,我可以想象我使用默认模板创建了带标签的iPhone App。然后在第一个视图中,我添加了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英寸”故事板属性。

2 个答案:

答案 0 :(得分:1)

尝试在viewDidLoad中使用它:

self.tabBarController.tabBar.translucent = NO;

答案 1 :(得分:0)

奥基。有两种方法可以消除此类问题:

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