2015-11-28 17 views
5

Tôi cố gắng để thay đổi một hạn chế đối với một ImageView cho iPhone 4S, 5,5S trong viewDidLoad:iOS 8 - Tìm những hạn chế đối với một UIView với định danh

for (NSLayoutConstraint *constraint in logoImage.constraints) { 
    if ([constraint.identifier isEqualToString:@"logoTopIdentifier"]) { 
     constraint.constant=10; 
    } 
} 

Có vẻ như rằng nó thậm chí không lặp lại trong vòng lặp . Có cách nào khác để có được một ràng buộc cụ thể với định danh?

+0

nếu bạn thêm ràng buộc vào bảng phân cảnh, bạn có thể trực tiếp kéo nó vào lớp học – Surely

+0

Ý của bạn là gì? – BlackM

+2

bạn biết làm thế nào để kết nối một uibutton trong bảng phân cảnh với lớp viewcontroller của bạn? Bạn có thể làm theo cách tương tự để kết nối ràng buộc với lớp viewcontroller của bạn. – Surely

Trả lời

4

Bạn có thể kết nối ràng buộc trong bảng phân cảnh với lớp trình điều khiển chế độ xem của bạn giống như kết nối phần tử giao diện người dùng.

Chỉ cần tìm các ràng buộc trong bảng phân cảnh của bạn, làm cho không gian làm việc thành dạng xem tách và kéo ràng buộc vào lớp trình điều khiển chế độ xem tương ứng của bạn.

Đôi khi nếu bạn muốn animate thay đổi vị trí, bạn có thể cập nhật các hạn chế như:

self.theConstraint?.constant = 100 
self.view.setNeedsUpdateConstraints() 
UIView.animateWithDuration(0.7) {() -> Void in 
    self.view.layoutIfNeeded() 
} 

khối.

Đó là nó.

1

Đây là thư viện KVConstraintExtensionsMaster mà bạn có thể truy cập vào bất kỳ hằng số nào từ số view dựa trên số NSLayoutAttribute. Cho dù ràng buộc đó có thêm Programmatically hoặc từ Interface Builder.

[self.logoImage accessAppliedConstraintByAttribute:NSLayoutAttributeTop completion:^(NSLayoutConstraint *expectedConstraint){ 
     if (expectedConstraint) { 
      expectedConstraint.constant = 10; 

      /* for the animation */ 
      [self.logoImage updateModifyConstraintsWithAnimation:NULL]; 
     } 
    }]; 
Các vấn đề liên quan