2014-12-10 23 views
5

khi tôi chạy ứng dụng của mình trên iPhone, tôi nhận được các lỗi sau. Khi tôi chạy nó trong giả lập tôi thì không. Nếu tôi lấy đi -12-| thì chiều cao của ô sẽ sụp đổ xuống khoảng 30 pixel. Và giao diện người dùng bị hỏng. Ai đó có thể giúp tôi và cho tôi biết tại sao không?Ràng buộc bố cục dọc UITableViewCell tùy chỉnh gây lỗi

Cảm ơn

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:0x170285ff0 V:|-(12)-[UIImageView:0x1741ec200] (Names: '|':UITableViewCellContentView:0x17419c7d0)>", 
"<NSLayoutConstraint:0x170286040 V:[UIImageView:0x1741ec200(200)]>", 
"<NSLayoutConstraint:0x170286090 V:[UIImageView:0x1741ec200]-(12)-| (Names: '|':UITableViewCellContentView:0x17419c7d0)>", 
"<NSLayoutConstraint:0x174881f40 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x17419c7d0(224)]>" 
) 
Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x170286090 V:[UIImageView:0x1741ec200]-(12)-| (Names: '|':UITableViewCellContentView:0x17419c7d0)> 
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. 
Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell's content view. We're considering the collapse unintentional and using standard height instead. 
Unable to simultaneously satisfy constraints. 

Trong một tùy chỉnh UITableViewCell tôi xác định các ràng buộc Layout như sau:

_imgView.translatesAutoresizingMaskIntoConstraints = NO; 
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-15-[imageView]-15-|" options:0 metrics:nil views:@{ @"imageView": _imgView }]]; 
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-12-[imageView(200)]-12-|" options:0 metrics:metrics views:@{ @"imageView" : _imgView }]]; 

--- EDIT ---

Để đối phó với contentView.bounds gợi ý: Trong số UITableViewController của tôi, tôi thực hiện như sau:

_tableView.rowHeight = UITableViewAutomaticDimension; 
_tableView.estimatedRowHeight = 30.0f; 

Vì vậy, chiều cao bằng không, không phải là vấn đề.

+0

Xin chào theo câu hỏi của bạn có vẻ như các ràng buộc đang bẻ khóa trên thiết bị nhưng không phải nó mô phỏng. Dường như bạn đang cố gắng đặt chiều cao điểm ảnh trong ô. Bạn có thể vui lòng thêm hình ảnh của mô phỏng và từ thiết bị cùng với màn hình đăng nhập khi bạn chạy trên trình mô phỏng và trong thiết bị. Vì lý do duy nhất có vẻ là do chiều cao ô xem bảng. –

Trả lời

1

Chiều cao ban đầu của ô có thể nhỏ hơn giới hạn dọc. Điều này tạo ra xung đột chiều cao ban đầu cho đến khi khung nội dung thay đổi.

Bạn có thể làm việc xung quanh vấn đề này bằng một trong những phương pháp sau đây:

  • Tăng chiều cao của tế bào trong kịch bản ban đầu phù hợp với nội dung.

  • Thay đổi giới hạn của contentView của tế bào đến một kích thước lớn hơn:

    self.contentView.bounds = CGRectMake(0, 0, 99999, 99999);

Bạn sẽ tìm thấy thêm chi tiết trong câu trả lời cho this auto layout question.

Cập nhật:

Các "Không thể đồng thời đảm bảo ràng buộc" xung đột giữa những hạn chế IMAGExem cố gắng để thiết lập chiều cao của tế bào đến 225 điểm, và chiều cao cố định cố gắng để thiết lập chiều cao tế bào đến 224 điểm.

Hình ảnh của bạnXem các giới hạn dọc sử dụng 224 (12 + 200 + 12) điểm. Bộ tách tableView sử dụng 1 điểm. Vì vậy, chiều cao tế bào cần phải là 225 điểm cho tất cả các ràng buộc được đáp ứng.

+0

Xin chào, xin lỗi vì đã trả lời muộn. Lỗi vẫn xuất hiện. – Joseph

+0

Tôi không sử dụng bảng phân cảnh. Giao diện người dùng dựa trên mã. Chiều cao của ô phải là 224 do Ràng buộc bố cục tôi đã xác định 'V: | -12- [imageView (200)] - 12- |' – Joseph

+0

Điều tôi không hiểu tại sao có chiều cao ban đầu ở vị trí đầu tiên ? Tôi không thực hiện '- (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath' – Joseph

Các vấn đề liên quan