自动布局在导航控制器,UISegmentedControl:在iOS7好,在iOS6的

问题描述:

对于导航控制器坏我喜欢向底部放置在一个视图从顶部的几个控制。我使用自动布局并添加了约束条件,因此视图之间存在垂直差距。这对于iOS7和iOS6在正常视图控制器中看起来不错,对于导航控制器中的iOS7也是如此;但在iOS6中是错误的。 UISegmentedControl显示错误。看截图。自动布局在导航控制器,UISegmentedControl:在iOS7好,在iOS6的

它看起来像UISegmentedControl较大高度不考虑对iOS6的视图。当从3.5英寸切换到4英寸屏幕时,它也变得不合适。

请注意,这只发生在导航控制器视图中。在导航控制器的故事板中,我将Top Bar设置为“不透明导航栏”。 上面的按钮有一个约束“顶部空间到顶部布局指南”。所有其他控件都有一个约束“Top Space to ....”(控制它们)。

是否有我可以应用的任何已知修复?

什么可能是错的? (我对自动布局来说是一个新手。)或者它只是一个我必须以某种方式工作的错误?


编辑:

我试图将分段控制在一个额外的观点,但没有帮助。

我会高度限制设置为分段控制的方式,确实帮助。但是,对于分段控件,这会为iOS6和iOS7设置相同的高度。现在,我的工作是在视图根据iOS版本加载并设置一个值时,在代码中更改/添加高度约束。还有其他建议吗?


的屏幕截图:

在导航控制器,iOS6的视图:

Shifted Layout in iOS6-View

在导航控制器,iOS7视图:

Nice Layout in iOS7


在一个 “正常” 视图控制器,iOS6的观点:

Nice Layout in iOS6-View

在一个 “正常” 视图控制器,iOS7观点:

Nice Layout in iOS7

到目前为止,我的工作是根据iOS版本添加高度约束。在iOS6的分段控件的高度是43,在iOS7高度为28码:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    int segCtrlHeight = (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) 
      ? 28 : 43; 
    NSLayoutConstraint *lc = [NSLayoutConstraint constraintWithItem:self.segCtrl attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:segCtrlHeight]; 
    [self.view addConstraint:lc]; 
} 

我回答我的问题,现在。如果有人想出更好的答案(最好不需要添加自定义代码),我会很高兴。

选择在界面生成器按钮,在属性检查器窗格中,将Type设置为Custom

+0

当我这样做时,按钮的高度变小,但分段控件保持在同一位置并仍然与文本字段发生冲突。 –

+0

您必须在Size Inspector中设置iOS 6/7 Delta参数!你做到了吗? –

+0

仅当不使用自动布局时,iOS 6/7 Delta是否可用?由于我使用自动布局,Delta参数不存在。 –