2015-07-21 25 views
5

Tôi có một số UIImageView mà tôi đã thêm vào chương trình và một nút đã được thêm vào trong Bảng phân cảnh. Và bây giờ tôi cần phải thêm "Khoảng cách dọc" giữa chúng, nhưng tôi không biết làm thế nào để làm điều đó. Sẽ dễ dàng nếu tôi đã thêm UIImageView trong kịch bản:Thêm "Dọc theo chiều dọc" lập trình trong swift

enter image description here

Làm thế nào tôi có thể giải quyết vấn đề?

+0

bạn cũng phải thêm trở ngại lập trình https://developer.apple.com/library/ios/documentation/AppKit/Reference/NSLayoutConstraint_Class/#//apple_ref/occ/clm/NSLayoutConstraint/constraintWithItem:attribute:relatedBy: toItem: thuộc tính: hệ số: hằng số: –

Trả lời

12

Để cho giả UIImageView của bạn được thêm vào trong đầu khi bạn đưa vào hình ảnh của bạn ở trên, sau đó bạn có thể thêm các ràng buộc theo chương trình như thế nào trong các cách sau:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // assuming here you have added the self.imageView to the main view and it was declared before. 
    self.imageView.setTranslatesAutoresizingMaskIntoConstraints(false) 

    // create the constraints with the constant value you want. 
    var verticalSpace = NSLayoutConstraint(item: self.imageView, attribute: .Bottom, relatedBy: .Equal, toItem: self.button, attribute: .Bottom, multiplier: 1, constant: 50) 

    // activate the constraints 
    NSLayoutConstraint.activateConstraints([verticalSpace]) 
} 

Trong đoạn mã trên tôi chỉ đặt các ràng buộc không gian dọc, bạn cần phải thiết lập các ràng buộc cần thiết để tránh cảnh báo về nó.

Có một số cách để thêm ràng buộc theo chương trình bạn có thể đọc thêm trong câu trả lời rất hay này SWIFT | Adding constraints programmatically.

Tôi hy vọng điều này sẽ giúp bạn.

+0

Cảm ơn bạn đã trả lời, nhưng bây giờ tôi gặp lỗi: "Không thể kích hoạt ràng buộc với các mục Steve

+0

Làm việc tốt, cảm ơn bạn! – Steve

+1

tại sao không phải là 'thuộc tính: .Top'? – Liumx31

1

Bạn nên xem qua số visual format language và sau đó xem tài liệu về cách tạo các ràng buộc theo lập trình here. Về cơ bản sẽ giống như thế này

NSDictionary *viewsDictionary = 
    NSDictionaryOfVariableBindings(self.imageView, self.button); 
    NSArray *constraints = 
    [NSLayoutConstraint constraintsWithVisualFormat:@"V:[imageView]-10-[button]" 
              options:0 metrics:nil views:viewsDictionary]; 
1

Để thêm khoảng cách dọc giữa 2 chế độ xem theo lập trình, bạn có thể sử dụng mã Swift 3 sau.

chế độ xem2 là chế độ xem hàng đầu trong khi xem1 chế độ xem dưới cùng.

let verticalSpace = NSLayoutConstraint(item: view1, attribute: .top, relatedBy: .equal, toItem: view2, attribute: .bottom, multiplier: 1, constant: 0) 
NSLayoutConstraint.activate([verticalSpace]) 

Lưu ý: Bạn phải thêm vị trí nằm ngang để làm việc này.

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