我使用帶有自動佈局和表格單元格內動力高度表格單元格自動佈局的問題,也有1的動態高度的UILabel和1倍的動態的UIView,其中包括多個UIImageViews的。有動力高度的UILabel和UIView的(容器)的表格單元格
這裏的佈局: Storyboard screenshot
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
tableView.estimatedRowHeight = 500;
return UITableViewAutomaticDimension;
}
的TableCell:
for(i=0; i<subviews.count; i++)
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ic_image.png"]];
[imgView setContentMode:UIViewContentModeScaleAspectFill];
imgView.clipsToBounds = YES;
[_viewAttaches addSubview:imgView];
imgView.translatesAutoresizingMaskIntoConstraints = NO;
if(i==0) {
NSLayoutConstraint *top = [NSLayoutConstraint
constraintWithItem:imgView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:_viewAttaches
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:0.f];
[_viewAttaches addConstraint:top];
} else {
UIImageView *prevView = subviews[i-1];
NSLayoutConstraint *top = [NSLayoutConstraint
constraintWithItem:imgView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:prevView
attribute:NSLayoutAttributeBottom
multiplier:1.0f
constant:10.f];
[_viewAttaches addConstraint:top];
}
NSLayoutConstraint *leading = [NSLayoutConstraint
constraintWithItem:imgView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:_viewAttaches
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:0.f];
[_viewAttaches addConstraint:leading];
NSLayoutConstraint *trailing = [NSLayoutConstraint
constraintWithItem:imgView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:_viewAttaches
attribute:NSLayoutAttributeTrailing
multiplier:1.0f
constant:0.f];
[_viewAttaches addConstraint:trailing];
NSLayoutConstraint *height = [NSLayoutConstraint constraintWithItem:imgView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:160];
[_viewAttaches addConstraint:height];
if(i==nAttaches-1) {
NSLayoutConstraint *bottom = [NSLayoutConstraint
constraintWithItem:imgView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:_viewAttaches
attribute:NSLayoutAttributeBottom
multiplier:1.0f
constant:0.f];
[_viewAttaches addConstraint:bottom];
}
i++;
}
但我得到這個錯誤:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
<NSLayoutConstraint:0x174288390 UILabel:0x101157580'Daniel'.height == 21 (active)>,
"<NSLayoutConstraint:0x174288cf0 UILabel:0x101158cb0'0 comments'.height == 21 (active)>",
"<NSLayoutConstraint:0x174288e80 UILabel:0x101157580'Daniel'.top == UITableViewCellContentView:0x101157130.topMargin + 2 (active)>",
"<NSLayoutConstraint:0x174288fc0 V:[UILabel:0x101157580'Daniel']-(-1)-[UILabel:0x1011469b0'I am currently in a happy...'] (active)>",
"<NSLayoutConstraint:0x1742890b0 V:[UILabel:0x1011469b0'I am currently in a happy...']-(0)-[UIView:0x101158b10] (active)>",
"<NSLayoutConstraint:0x174289240 V:[UIView:0x101158b10]-(-1)-[UILabel:0x101158cb0'0 comments'] (active)>",
"<NSLayoutConstraint:0x1742892e0 UITableViewCellContentView:0x101157130.bottomMargin == UILabel:0x101158cb0'0 comments'.bottom + 1 (active)>",
"<NSLayoutConstraint:0x170284ec0 UIView:0x101158b10.height == 330 (active)>",
"<NSLayoutConstraint:0x17428a640 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x101157130.height == 89 (active)>"
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170284ec0 UIView:0x101158b10.height == 330 (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
請幫我,我錯過了什麼。先謝謝你。
您使用的故事板或XIB? –
http://stackoverflow.com/a/40035858/6656894參考這個答案@Daniel –
我正在使用故事板,@HimanshuMoradiya – Daniel