2013-08-13 23 views
26

Bố cục Tự động, tốt như vậy, khiến tôi phát cuồng với những hạn chế. Tôi có chế độ chân dung được thiết kế bằng IB nhưng tôi không thể có được định hướng ngang mong muốn để hoạt động.Làm việc với tính năng Tự động hoàn tất trong Chân dung và Phong cảnh

layout

Chú ý rằng khi thay đổi định hướng đến cảnh quan, khoảng cách giữa các khối UIImageView giảm và sự liên kết văn bản của SAMPLE TEXT thay đổi sang phải thẳng hàng.

Hiện tại, tôi đã thêm một vài ràng buộc để nó hoạt động. Tuy nhiên, tôi cần giữ khoảng trống giữa các khối UIImageView được cố định, do đó nó trông chật chội trong chân dung và tốt trong cảnh quan. Tôi cần nó được trải ra đồng đều trong bức chân dung và nén trong cảnh quan (như trong hình trên). Tương tự như vậy, hiện tại các ràng buộc của tôi đưa ra văn bản nhưng nó không giữ nó ở giữa màn hình và căn phải.

Điều này có thể thực hiện được với Bố cục tự động không? Nếu vậy, làm thế nào? Giúp đánh giá cao.

+0

Để đạt được khoảng cách linh hoạt, có thể là các câu hỏi tiếp theo hữu ích: http://stackoverflow.com/questions/17089427/ios-autolayout-vertically-equal-space-to-fill-parent-view và http://stackoverflow.com/ câu hỏi/13680303/ios-auto-layout-equal-spaces-to-fit-superviews-width – Mikhail

+0

Để phát với chế độ xem hạn chế về thời gian chạy, điều này sẽ hữu ích [Thay đổi thời gian chạy trong Autolayout] (http://stackoverflow.com/questions/27414052/moving-views-with-constraints/27420696 # 27420696) – Kampai

Trả lời

12

Có một số cách để tiếp cận điều này. Một cách là bao gồm 3 lượt xem hình ảnh của bạn trong UIView. Đưa ra các ràng buộc xem hình ảnh trên cùng và dưới cùng tương ứng trên cùng và dưới cùng, và cung cấp cho ràng buộc ở giữa là một ràng buộc trung tâm. Cung cấp cho khung nhìn kèm theo này một chiều cao cố định và chiều rộng, và một ràng buộc ở phía trên cùng của khung nhìn của trình điều khiển. Tạo một IBOutlet cho ràng buộc chiều cao cho khung nhìn bao quanh này và thay đổi nó khi xoay vòng. Trong ví dụ dưới đây, tôi đã cho nó một chiều cao 350 trong bức chân dung:

-(void)updateViewConstraints { 
    [super updateViewConstraints]; 
    if (self.view.bounds.size.height < self.view.bounds.size.width) { 
     self.heightCon.constant = self.view.bounds.size.height; 
    }else{ 
     self.heightCon.constant = 350; 
    } 
} 

Đối với các nhãn, cách dễ nhất là để loại bỏ các trở ngại bạn có (đáy và centerX), và thêm dấu và centery về luân chuyển .

+0

Nghe hay đấy. Tuy nhiên, quan điểm của tôi không đáp ứng với - (void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceThời gian thực hiện: (NSTimeInterval) duration..I đã thử NSLog-ging 'interfaceOrientation' nhưng không có gì xuất hiện ... Tôi đã đăng ký thông báo định hướng của thiết bị nhưng điều đó làm cho hoạt ảnh chậm chạp .. bạn có biết tại sao chế độ xem không phản hồi phương pháp bạn đã đề cập –

+0

@GauravWadhwani, tôi không biết tại sao điều đó sẽ không được gọi. Tôi đã thay đổi bài đăng của mình để đặt mã trong updateConstraints. Xem có hiệu quả không. – rdelmar

+0

Đó là công trình, cảm ơn một tấn !!! Đã dành cả ngày cho việc này. Sẽ chỉ thêm vào các khối và đánh dấu câu trả lời của bạn trong giây lát. Cảm ơn một lần nữa :) –

2

Có, bạn hoàn toàn có thể thực hiện việc này bằng Bố cục tự động. Thông qua một loạt các bước, mà tôi nghĩ có thể là quá dài để đăng như một câu trả lời, bạn có thể giữ khoảng cách giữa ImageViews của bạn và giữ cho sự liên kết của văn bản giống nhau.

Về cơ bản, bạn sẽ phải ghim một góc của mỗi ImageView và loại bỏ một số ràng buộc để nó không tự động nén khoảng cách khi bạn thay đổi hướng.

Giải thích đầy đủ về cách thực hiện điều này (khá chính xác những gì bạn đang yêu cầu) is explained in this tuorial. Bạn có thể tìm thấy nó ở giữa trang.

Hy vọng đây là những gì bạn đang tìm kiếm.

+0

Hey, hiện tại việc nén và căn chỉnh văn bản không thay đổi.Tôi muốn không gian để nén và căn chỉnh văn bản để thay đổi .. –

+0

Bạn đã thử liên kết mà tôi đã đưa ra chưa? Bạn muốn nén không gian nào? Có vẻ như, từ câu hỏi của bạn, rằng bạn không muốn chúng bị nén ở chế độ ngang. Bạn có thực sự muốn chúng nén không? – CaptJak

+0

Vâng, tôi muốn các khối được đặt cách nhau trong Chân dung và được nén theo chiều ngang sao cho chúng phù hợp với cách được hiển thị trong hình ảnh. Tôi đã thử liên kết trước đó nhưng không thể giải quyết vấn đề. Sẽ đọc lại mặc dù :) –

6

Có, nó có thể được thực hiện với Bố cục tự động. Nếu bạn muốn khoảng cách giữa các chế độ xem tăng và/hoặc giảm tùy thuộc vào hướng, bạn có thể sử dụng mối quan hệ Nhỏ hơn hoặc Bằng hoặc Lớn hơn hoặc Bình đẳng (thay vì bằng) cho ràng buộc, cho phép khoảng cách tăng hoặc thu nhỏ:

enter image description here

Chơi xung quanh với điều đó và bạn sẽ có thể nhận được những gì bạn muốn.

+0

Cảm ơn bạn đã trả lời của bạn. Tôi đã thử thay đổi ràng buộc đó. Nhưng ngay sau khi tôi thay đổi nó thành bất cứ điều gì khác hơn là "Bình đẳng", nó mang lại cho tôi cảnh báo bố trí không rõ ràng cho vị trí nằm ngang. –

+0

Bạn sẽ cần phải thêm các ràng buộc khác vào 'UIImageView' trên cùng và dưới cùng để sử dụng <= or > = trong các ràng buộc giữa chúng không rõ ràng. – mluisbrown

+0

Tôi cần vị trí của UIImage được thay đổi theo chiều dọc, vì vậy bất kỳ ràng buộc nào tôi thêm vào, nó đều ở dạng <= or =>. Nhưng xcode hy vọng tôi thêm ít nhất một ràng buộc cho chiều dọc được cố định. Làm thế nào tôi có thể thêm một ràng buộc cố định và giữ cho nó linh hoạt? –