剛剛算是勉強(qiáng)自己解決了:方法比較笨,即用一個(gè)backview來(lái)包含3個(gè)label,然后計(jì)算3個(gè)label的寬度并賦值給外層的backview,最后把backview居中顯示,就完成了3個(gè)label的居中顯示!如果有更好的方法,歡迎補(bǔ)充,討論!層次結(jié)構(gòu)是:c-view-backview-label1-label2-label3c//設(shè)置水平布局[backviewaddConstraints:[NSLayoutConstraintconstraintsWithVisualFormat:@"H:|[lab_before]-[lab_middle]-[lab_after]|"options:0metrics:nilviews:NSDictionaryOfVariableBindings(lab_before,lab_middle,lab_after)]];c//設(shè)置backview寬度[viewaddConstraint:[NSLayoutConstraintconstraintWithItem:backviewattribute:NSLayoutAttributeCenterXrelatedBy:NSLayoutRelationEqualtoItem:dynaContentViewattribute:NSLayoutAttributeCenterXmultiplier:1.0constant:before_width+middle_width+after_width]];//設(shè)置backview居中顯示[viewaddConstraint:[NSLayoutConstraintconstraintWithItem:backviewattribute:NSLayoutAttributeCenterXrelatedBy:NSLayoutRelationEqualtoItem:dynaContentViewattribute:NSLayoutAttributeCenterXmultiplier:1.0constant:0.0]];//設(shè)置backview的高度[viewaddConstraints:[NSLayoutConstraintconstraintsWithVisualFormat:@"V:[backview(==34)]-0-|"options:0metrics:nilviews:NSDictionaryOfVariableBindings(backview)]];問(wèn)題來(lái)了:有沒(méi)有方法不計(jì)算每個(gè)label的寬度并賦值給superview的寬度,而是自動(dòng)填充superview!PS:我在測(cè)試的時(shí)候,發(fā)現(xiàn)不設(shè)置backview的寬度,就是整個(gè)屏幕的寬度!2015/03/01更新:c@interfaceCustomView1:UIView@property(nonatomic,strong)UILabel*label1;@property(nonatomic,strong)UILabel*label2;@endc@implementationCustomView1-(id)init{self=[superinit];if(self){_label1=[UILabelnew];_label1.text=@"AAAAAA121212121";_label1.textColor=[UIColorblackColor];_label1.translatesAutoresizingMaskIntoConstraints=NO;[selfaddSubview:_label1];_label2=[UILabelnew];_label2.text=@"BBBBBB";_label2.textColor=[UIColororangeColor];_label2.translatesAutoresizingMaskIntoConstraints=NO;[selfaddSubview:_label2];}returnself;}-(void)updateConstraints{NSDictionary*views=NSDictionaryOfVariableBindings(_label1,_label2);//label1的寬高[selfaddConstraint:[NSLayoutConstraintconstraintWithItem:_label1attribute:NSLayoutAttributeWidthrelatedBy:NSLayoutRelationEqualtoItem:nilattribute:NSLayoutAttributeNotAnAttributemultiplier:1.0constant:[_label1intrinsicContentSize].width]];[selfaddConstraint:[NSLayoutConstraintconstraintWithItem:_label1attribute:NSLayoutAttributeHeightrelatedBy:NSLayoutRelationEqualtoItem:nilattribute:NSLayoutAttributeNotAnAttributemultiplier:1.0constant:[_label1intrinsicContentSize].height]];//label2的寬高[selfaddConstraint:[NSLayoutConstraintconstraintWithItem:_label2attribute:NSLayoutAttributeWidthrelatedBy:NSLayoutRelationEqualtoItem:nilattribute:NSLayoutAttributeNotAnAttributemultiplier:1.0constant:[_label2intrinsicContentSize].width]];[selfaddConstraint:[NSLayoutConstraintconstraintWithItem:_label2attribute:NSLayoutAttributeHeightrelatedBy:NSLayoutRelationEqualtoItem:nilattribute:NSLayoutAttributeNotAnAttributemultiplier:1.0constant:[_label2intrinsicContentSize].height]];[selfaddConstraints:[NSLayoutConstraintconstraintsWithVisualFormat:@"H:|[_label1][_label2]|"options:NSLayoutFormatAlignAllBottommetrics:nilviews:views]];[selfaddConstraints:[NSLayoutConstraintconstraintsWithVisualFormat:@"V:[_label1]|"options:0metrics:nilviews:views]];[superupdateConstraints];}-(CGSize)intrinsicContentSize{CGSizel1size=[_label1intrinsicContentSize];CGSizel2size=[_label2intrinsicContentSize];returnCGSizeMake(l1size.width+l2size.width,l1size.height);}@end