【问题标题】:Auto Layout in Navigation Controller with UISegmentedControl: good in iOS7, bad in iOS6带有分段控制的导航控制器中的自动布局:在 iOS7 中好,在 iOS 6 中不好
【发布时间】:2014-03-03 10:18:21
【问题描述】:

对于导航控制器,我喜欢在视图中从上到下放置一些控件。我正在使用自动布局并添加了约束,因此视图彼此之间存在垂直间隙。这对于普通视图控制器中的 iOS7 和 iOS6 看起来不错,也适用于导航控制器中的 iOS7;但在 iOS6 中是错误的。 UISegmentedControl 显示错误。查看屏幕截图。

iOS6 视图似乎没有考虑 UISegmentedControl 的较大高度。从 3.5 英寸屏幕切换到 4 英寸屏幕时,它也会移位。

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

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

可能出了什么问题? (我是自动布局的新手。)或者它只是一个我必须以某种方式解决的错误?


编辑:

我尝试将分段控件放在额外的视图中,但这也没有帮助。

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


截图:

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

在导航控制器中,iOS7 视图:


在“普通”视图控制器中,iOS6 视图:

在“普通”视图控制器中,iOS7 视图:

【问题讨论】:

    标签: ios uinavigationcontroller storyboard autolayout uisegmentedcontrol


    【解决方案1】:

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

    【讨论】:

    • 当我这样做时,按钮的高度变小了,但是分段控件保持在相同的位置并且仍然与文本字段发生冲突。
    • 您必须在 Size Inspector 中设置 iOS 6/7 Delta 参数!你做到了吗?
    • iOS 6/7 Delta 不是仅在不使用自动布局时可用吗?由于我使用自动布局,所以没有 delta 参数。
    • 哦,我不知道你在使用自动布局。
    • 您是否尝试过将类型设置为自定义(我知道会更改尺寸)并在此之后设置按钮的大小?
    【解决方案2】:

    到目前为止,我的工作是根据 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];
    }
    

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

    【讨论】:

      猜你喜欢
      • 2013-09-07
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 2017-05-14
      相关资源
      最近更新 更多