2013-06-14 29 views
6

Tôi có một Scrollview với một nhãn. Để tập trung nhãn ở trung tâm hàng đầu, tôi áp dụng hai khó khăn với nó:Màn hình màu đen sau khi cài đặt dịchAutoresizingMaskIntoConstraints thành NO

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[questionLabel]" 
                  options:0 
                  metrics:0 
                   views:viewsDictionary]]; 
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.questionLabel 
               attribute:NSLayoutAttributeCenterX 
               relatedBy:NSLayoutRelationEqual 
                toItem:self 
               attribute:NSLayoutAttributeCenterX 
               multiplier:1.0 
                constant:.0]]; 

Nếu không có thiết translatesAutoresizingMaskIntoConstraints cho questionLabel để NO, tôi sẽ chạy vào một ngoại lệ ném bởi Core Layout. Nó cảnh báo với tôi rằng nó không thể đáp ứng các hạn chế sau:

(
"<NSLayoutConstraint:0x8e3baf0 V:|-(30)-[UILabel:0xa184ca0] (Names: '|':WLQuestionnaireSingleQuestionView:0xa184050)>", 
"<NSAutoresizingMaskLayoutConstraint:0x8e3efa0 h=--& v=--& UILabel:0xa184ca0.midY == + 15>" 

)

Trong đó tôi thấy rằng cốt lõi Layout cố gắng để đáp ứng một hạn chế đó đã được tự động tạo ra để tương thích ngược với mặt nạ autoresizing. Theo hiểu biết của tôi, việc sửa lỗi này nên được đặt là translatesAutoresizingMaskIntoConstraints thành NO, nhưng tiếc là kết quả trong màn hình hoàn toàn màu đen, không có thông báo gỡ lỗi.

Tôi đã triển khai chế độ xem theo chương trình, không có ngòi bút.

+1

Tôi đang chiến đấu cùng loại hành vi. bạn đã tìm được cách giải quyết chưa? – topwik

+0

Tôi gặp vấn đề tương tự. – clearwater82

+0

Tôi xin lỗi, đã quá lâu rồi và tôi không có quyền truy cập vào nguồn nữa. Tôi tin rằng có một cách giải quyết như một giải pháp rất cụ thể cho vấn đề của tôi (có thể tránh vấn đề này ngay từ đầu), nhưng tôi không thể nói tôi có giải pháp cho vấn đề cụ thể này ngay bây giờ. – ff10

Trả lời

0

Vâng, tôi thấy câu hỏi này đã khá cũ rồi. Tuy nhiên tôi muốn đưa ra câu trả lời cho điều này vì nó vẫn có thể thú vị cho người khác. Khi bạn đang sử dụng một số UIScrollView với Tự động thanh toán, kích thước nội dung được xác định bởi các ràng buộc. Vì bạn không có ràng buộc từ chế độ xem của mình ở phía dưới, chiều cao không thể được đặt chính xác. Điều tương tự cho chiều rộng như bạn đã không chỉ định bất kỳ chiều rộng nào cho chế độ xem của bạn. Bạn chỉ cần nói với AutoLayout rằng nó sẽ được đặt ở trung tâm của khung nhìn. Vấn đề của bạn có thể được giải quyết bằng cách sử dụng mã sau (xem chiều rộng = 40):

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(30)-[questionLabel]|" 
                 options:0 
                 metrics:0 
                  views:viewsDictionary]]; 
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.questionLabel 
               attribute:NSLayoutAttributeCenterX 
               relatedBy:NSLayoutRelationEqual 
                toItem:self 
               attribute:NSLayoutAttributeCenterX 
               multiplier:1.0 
                constant:.0]]; 
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[questionLabel(40)]", options: 0, metrics: 0, views: viewsDictionary]];