2012-10-19 14 views
5

Trong xây dựng giao diện tôi có thể có được một "Vertical Space" phù hợp với "tiêu chuẩn" khoảng cách bằng 'ghim':Làm cách nào để đặt khoảng cách chuẩn giữa UIViews bằng mã với bố cục tự động?

enter image description hereenter image description here

Trong ngôn ngữ hạn chế thị giác tôi có thể thực hiện điều tương tự với:

V:[top]-[bottom] 

Làm cách nào để thêm khoảng cách chuẩn giữa hai chế độ xem trong mã?

Tôi đang tìm một cái gì đó như thế này có thể xuất hiện trong một UIViewController:

NSLayoutConstraint *spacing = ??? 
[self.view addConstraint spacing]; 
+0

Tại sao bạn không thể sử dụng định dạng trực quan "trong mã", hoặc đây chỉ là một câu hỏi tò mò (mà là tốt của tôi!) – jrturton

+0

@jrturton, tất cả các ràng buộc khác của tôi là trong mã. Tôi đang làm điều này bởi vì tôi đã tìm thấy câu lệnh này trong tài liệu: "Có những ràng buộc không thể được thể hiện trong cú pháp định dạng trực quan, mặc dù hầu hết các ràng buộc hữu ích trong các giao diện người dùng thực có thể là một ràng buộc hữu ích. Cho đến khi tôi biết những gì tôi đang làm và tất cả những hạn chế của ngôn ngữ trực quan trở nên rõ ràng, tôi muốn làm mọi thứ trong mã đầu tiên. –

Trả lời

2

Trộn và phù hợp với những hạn chế định dạng hình ảnh và tiết hơn phong cách tạo ràng buộc duy nhất (những gì tôi nghĩ bạn đang nói đến khi bạn nói "trong mã") là tốt - trong thực tế, trong các cuộc đàm phán về bố cục tự động của WWDC, thứ tự "ưa thích" để bạn tạo ra các ràng buộc được nêu như sau:

  • Giao diện người xây dựng
  • trực quan định dạng
  • Độc phong cách chế

Trừ khi bạn cần thêm sức mạnh và sự linh hoạt mà phong cách hạn chế đơn cung cấp cho bạn (và có rất nhiều nơi định dạng nơi thị giác không hoạt động, theo kinh nghiệm của tôi với nó cho đến nay), bạn nên sử dụng định dạng hình ảnh. Có vẻ như bạn đang tiếp cận danh sách ở trên từ dưới lên, thay vì từ trên xuống.

Nếu bạn muốn bố trí lượt xem với khoảng cách chuẩn và bạn không sử dụng IB, thì định dạng hình ảnh sẽ có ý nghĩa để sử dụng. Như Rob nói, không có hằng số cho khoảng cách "chuẩn" có sẵn, và bạn đang tạo ra nhiều công việc hơn cho chính mình bằng cách nhấn mạnh vào những ràng buộc duy nhất cho mọi thứ.

+0

Tôi đã kết thúc lên phong cách định dạng hỗn hợp hình ảnh với một ngoại lệ - một ràng buộc kích thước tương đối mà không thể được thể hiện trong bất cứ điều gì khác hơn là mã. Điều này làm sạch mã ràng buộc đáng kể. Cuộc gọi tốt. –

5

Tôi đã không cố gắng này:

[self.view addConstraint:[NSLayoutConstraint 
    constraintWithItem:topView 
    attribute:NSLayoutAttributeBottom 
    relatedBy:NSLayoutRelationEqual 
    toItem:bottomView 
    attribute:NSLayoutAttributeTop 
    multiplier:1 
    constant:8]]; 
+5

Đó không phải là chỉ khó mã hóa một không gian của 8? Tôi nghĩ rằng OP là sau một số hằng số hệ thống hoặc từ khóa để mô tả khoảng cách chuẩn. – jrturton

+0

@jrturton Tôi không thể tìm thấy một hằng số cho nó trong các tập tin tiêu đề. –

+0

@jrturton, Nếu có một hằng số hệ thống biểu thị khoảng cách chuẩn, đó sẽ là một lựa chọn tốt. Nhưng tôi không muốn sử dụng số 8 trực tiếp. –