错位的UISegmentedControl(潜在的bug)

Szu*_*Szu 5 iphone uitabbar ios nslayoutconstraint ios7

我很擅长使用Apple NSAutolayout.在最简单的例子中,我可以想象我使用默认模板创建了带标签的iPhone App.然后在第一个视图中我添加UISegmentedControl并添加了2个约束:"将中心X对齐:SuperView"和"底部空间到:底部布局指南".然后当我运行app时,UISegmentedControl位置是正确的,但是当我切换到第二个视图并返回时,它UISegmentedControl会向下移动并变为隐藏状态UITabBar.当我旋转设备时,分段控制位置会回到正确的位置.

有避免这种情况的解决方案吗?

编辑:很少有快照显示问题.

之前http://img824.imageshack.us/img824/6830/o2v2.png 之后http://img5.imageshack.us/img5/2205/ksb6.png

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

您需要使用属性存储数据,例如:

@property (nonatomic, assign) CGRect fix_didLoadSegmentedFrame;
Run Code Online (Sandbox Code Playgroud)

然后在viewDidLoad处理值更改的函数中,UISegmentedControl您应该添加行:

self.fix_didLoadSegmentedFrame = self.mapTypeSegmentedControl.frame;
Run Code Online (Sandbox Code Playgroud)

您还应该设置"应用视网膜3.5英寸"故事板属性.

Szu*_*Szu 0

好的。有两种可能性可以消除此类问题:

  • 选中选项“在构建时删除”
  • 附加UISegmentedControl到超级视图而不是顶层