2013-03-26 29 views
6

Tôi đã đọc ghi chú phát hành iOS6 và một số chủ đề liên quan cho Autolayout + UIScrollview tại đây, nhưng tôi có một lỗi lạ Tôi không biết cách giải quyết.Hạn chế tự động ẩn UIScrollView hành vi lạ

hệ thống cấp bậc của quan điểm là:

- View 
-- UIScrollView 
---- UIImageView 
---- UILabel 

tôi đã thêm các yếu tố trong giao diện thông qua giao diện Builder, với Autolayout ON và giữ những hạn chế mặc định.

Nhãn của tôi có văn bản động và chiều cao của nó có thể tiêu hao (số dòng = 0 được định cấu hình bằng IB). Tôi muốn chế độ xem cuộn tự động điều chỉnh theo chiều cao của chế độ xem hình ảnh + nhãn.

Đây là mã cho lớp xem điều khiển liên quan:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.scrollView.translatesAutoresizingMaskIntoConstraints = NO; 
    self.imageView.translatesAutoresizingMaskIntoConstraints = NO; 
    self.label.translatesAutoresizingMaskIntoConstraints = NO; 

    self.imageView.image = [UIImage imageNamed:@"image.png"]; 

    self.label.text = @"Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text END"; 
    [self.label sizeToFit]; 

    NSDictionary *viewsDictionnary = NSDictionaryOfVariableBindings(scrollView, imageView, label); 
    [self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]-20-[label]-10-|" options:0 metrics:0 views:viewsDictionnary]]; 

    self.imageView.userInteractionEnabled = YES; 
    [self.imageView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)]]; 
} 

- (void)tap 
{ 
    [self.navigationController pushViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"View2"] animated:YES]; 
} 

Như bạn thấy, tôi thêm một hạn chế dọc cho xem di chuyển. Điều này có vẻ hoạt động tốt nhưng tôi có thông báo sau đây trong bảng điều khiển:

01-01341: 11303] Không thể đồng thời thỏa mãn các ràng buộc. Có lẽ ít nhất một trong những ràng buộc trong danh sách sau là danh sách bạn không muốn. Hãy thử điều này: (1) nhìn vào mỗi ràng buộc và cố gắng tìm ra điều bạn không mong đợi; (2) tìm mã số đã thêm ràng buộc hoặc ràng buộc không mong muốn và sửa lỗi đó. (Lưu ý: Nếu bạn thấy NSAutoresizingMaskLayoutConstraints mà bạn không hiểu, tham khảo tài liệu cho các tài sản UIView translatesAutoresizingMaskIntoConstraints) ( "", "")

sẽ cố gắng để khôi phục lại bằng cách phá vỡ chế

và bây giờ các lỗi cụ thể: Nếu tôi di chuyển đến xuống, sau đó nhấp vào hình ảnh để đi đến quan điểm thứ hai, và nhấn lại trở về giao diện hiện tại, xem di chuyển sẽ bắt đầu từ vị trí tiền lệ vì nó là đỉnh của v iew. Và tôi sẽ không thể cuộn để xem phần trên của chế độ xem.

Tôi xin lỗi tôi không có đủ uy tín để gửi hình ảnh, nhưng bạn có thể tải về các dự án mẫu ở đây để tạo lại lỗi: https://docs.google.com/file/d/0B-sCDWMvn-KGS19sUkZnUFdWWTg/edit?usp=sharing

Thanks for the help, Lukas

EDIT Giải pháp cho lỗi này tại đây: UIScrollView wrong offset with Auto Layout

Trả lời

1

Theo thông báo trong bảng điều khiển. Các ràng buộc theo chiều dọc của bạn từ xung đột xib với các ràng buộc mà bạn đã thêm vào trong mã. Nếu bạn chỉ muốn thay đổi không gian dọc giữa imageViewlabel thì hãy thực hiện nó trong xib.

Liên quan đến lỗi của bạn. Đây là giải pháp tap here.

+0

Cảm ơn, đây là lỗi tương tự như được mô tả trong liên kết bạn đã cung cấp. Cách giải quyết được cung cấp ở đó. – lukas