UISegmentedControl与AutoLayout错位标题

Shi*_*ami 1 objective-c uisegmentedcontrol ios autolayout

我有一个自定义的UITableViewCell,UISegmentedControl右侧的左侧有一个标签.我刚刚习惯在代码中使用自动布局,这就是我在自定义单元格中使用的内容(使用UIView + AutoLayout):

-(void)updateConstraints
{
    self.titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
    self.segmentedControl.translatesAutoresizingMaskIntoConstraints = NO;

    [self.titleLabel pinToSuperviewEdges:JRTViewPinLeftEdge inset:DB_AUTOLAYOUT_DEFAULT_INSET];
    [self.titleLabel centerInContainerOnAxis:NSLayoutAttributeCenterY];
    [self.segmentedControl pinToSuperviewEdges:JRTViewPinRightEdge inset:DB_AUTOLAYOUT_DEFAULT_INSET];
    [self.segmentedControl pinAttribute:NSLayoutAttributeBaseline
                            toAttribute:NSLayoutAttributeBaseline
                                 ofItem:self.titleLabel];

    [super updateConstraints];
}
Run Code Online (Sandbox Code Playgroud)

我的问题是分段控件的第一个标题始终未对齐:

这就是它在iOS 6上的样子: 在此输入图像描述

在iOS 7上: 在此输入图像描述

所以第一个问题是:我该如何解决这个问题?

其他,切向问题:我是通过放入自动布局代码做正确的事情updateConstraints还是应该只应用约束一次?

coc*_*oco 7

简而言之,来自UIView.h

如果在-updateConstraints中设置所有约束,如果没有人约束,你甚至可能永远不会收到updateConstraints.要修复此鸡和蛋的问题,请覆盖此方法以返回YES.

+ (BOOL)requiresConstraintBasedLayout {
        return YES; 
}
Run Code Online (Sandbox Code Playgroud)