Tôi đã tạo thành một tùy chỉnh đơn giản UICollectionViewCell
trong bảng phân cảnh của mình, tôi cũng đã làm điều này một cách có lập trình với kết quả giống hệt nhau.Bố cục tự động UICollectionViewCell
Nó có một số ít UIImageView
và hai UILabels
, như vậy:
<--UIIMAGEVIEW--> <--UILABEL-------->
|-(10px)- | | -(10px)- -(10px)-|
<---------------> <--UILABEL-------->
Hình ảnh ngồi bên trái, sau đó sang bên phải của nó là hai nhãn trên và dưới mỗi khác.
Mỗi khoảng cách đều nhau với khoảng cách 10 pixel và tất cả được căn giữa trên trục Y của ô. Các nhãn sau đó có một hằng số để bù đắp chúng từ trung tâm (lên và xuống).
Hình ảnh có chiều cao và chiều rộng cố định là 44px và các nhãn có chiều cao cố định là 20px (với chiều rộng linh hoạt).
Các ràng buộc hoạt động như mong đợi và không bao giờ phá vỡ ứng dụng, nhưng chúng luôn nhổ ra thông tin nhật ký bảng điều khiển gây phiền nhiễu này bên dưới, vì chúng rõ ràng đang bị hỏng.
Nếu tôi thêm dòng này vào lớp con UICollectionViewCell
của mình, các ràng buộc không còn phá vỡ và loại bỏ lỗi giao diện điều khiển, nhưng chúng hoàn toàn bị hỏng trên màn hình.
[self.contentView setTranslatesAutoresizingMaskIntoConstraints:NO];
Bất kỳ manh mối nào? Xin hãy giúp, nó có vẻ vô lý!
Đây là mã giao diện điều khiển lỗi:
2014-10-25 18:28:14.273 Air Plan[1579:580797] 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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x17009edc0 H:[UIImageView:0x1701f7d00(44)]>",
"<NSLayoutConstraint:0x17009f130 H:|-(10)-[UIImageView:0x1701f7d00] (Names: '|':UIView:0x170183810)>",
"<NSLayoutConstraint:0x17009f270 H:[UIImageView:0x1701f7d00]-(10)-[UILabel:0x155e59970'detailLbl']>",
"<NSLayoutConstraint:0x17009f310 H:[UILabel:0x155e59970'detailLbl']-(10)-| (Names: '|':UIView:0x170183810)>",
"<NSAutoresizingMaskLayoutConstraint:0x17409eff0 h=--& v=--& H:[UIView:0x170183810(50)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x17009edc0 H:[UIImageView:0x1701f7d00(44)]>
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.
2014-10-25 18:28:14.276 Air Plan[1579:580797] 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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x17009fcc0 H:[UIImageView:0x1701fa800(44)]>",
"<NSLayoutConstraint:0x17009ff40 H:|-(10)-[UIImageView:0x1701fa800] (Names: '|':UIView:0x170180a90)>",
"<NSLayoutConstraint:0x1702800a0 H:[UIImageView:0x1701fa800]-(10)-[UILabel:0x155e5b440'detailLbl']>",
"<NSLayoutConstraint:0x170280140 H:[UILabel:0x155e5b440'detailLbl']-(10)-| (Names: '|':UIView:0x170180a90)>",
"<NSAutoresizingMaskLayoutConstraint:0x17409ea00 h=--& v=--& H:[UIView:0x170180a90(50)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x17009fcc0 H:[UIImageView:0x1701fa800(44)]>
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.
2014-10-25 18:28:14.278 Air Plan[1579:580797] 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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170280a00 H:[UIImageView:0x1701fab00(44)]>",
"<NSLayoutConstraint:0x170280c80 H:|-(10)-[UIImageView:0x1701fab00] (Names: '|':UIView:0x1701822f0)>",
"<NSLayoutConstraint:0x170280dc0 H:[UIImageView:0x1701fab00]-(10)-[UILabel:0x155e5cd10'detailLbl']>",
"<NSLayoutConstraint:0x170280e60 H:[UILabel:0x155e5cd10'detailLbl']-(10)-| (Names: '|':UIView:0x1701822f0)>",
"<NSAutoresizingMaskLayoutConstraint:0x17409f180 h=--& v=--& H:[UIView:0x1701822f0(50)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170280a00 H:[UIImageView:0x1701fab00(44)]>
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.
2014-10-25 18:28:14.280 Air Plan[1579:580797] 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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170281090 H:[UIImageView:0x1701fae00(44)]>",
"<NSLayoutConstraint:0x170281310 H:|-(10)-[UIImageView:0x1701fae00] (Names: '|':UIView:0x170182220)>",
"<NSLayoutConstraint:0x1702813b0 H:[UIImageView:0x1701fae00]-(10)-[UILabel:0x155e5d620'titleLbl']>",
"<NSLayoutConstraint:0x170281400 H:[UILabel:0x155e5d620'titleLbl']-(10)-| (Names: '|':UIView:0x170182220)>",
"<NSAutoresizingMaskLayoutConstraint:0x17409fd60 h=--& v=--& H:[UIView:0x170182220(50)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170281090 H:[UIImageView:0x1701fae00(44)]>
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.
2014-10-25 18:28:14.282 Air Plan[1579:580797] 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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170281b80 H:[UIImageView:0x1701fb100(44)]>",
"<NSLayoutConstraint:0x17409f4a0 H:|-(10)-[UIImageView:0x1701fb100] (Names: '|':UIView:0x170182150)>",
"<NSLayoutConstraint:0x17409f5e0 H:[UIImageView:0x1701fb100]-(10)-[UILabel:0x155d64210'detailLbl']>",
"<NSLayoutConstraint:0x17409f680 H:[UILabel:0x155d64210'detailLbl']-(10)-| (Names: '|':UIView:0x170182150)>",
"<NSAutoresizingMaskLayoutConstraint:0x1742800f0 h=--& v=--& H:[UIView:0x170182150(50)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170281b80 H:[UIImageView:0x1701fb100(44)]>
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.
Hiện nay để nhanh chóng nên được như thế hơn: 'override func awakeFromNib() {super.awakeFromNib() contentView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight]} ' – Apan