2014-05-14 20 views
41

Tôi đã UITableView với Autolayout và tôi cần giảm chiều cao khi GADBannerView xuất hiện ở cuối màn hình.Thay đổi khung theo lập trình với bố cục tự động

Thật không may với Autolayout là không thể sửa đổi khung. Giải pháp là loại bỏ Autolayout và đặt khung bằng tay. Điều này rất nguy hiểm vì tất cả các ứng dụng của tôi hoạt động tốt trên màn hình 3,5 'và 4.0' và xóa bố cục tự động gây ra một giai đoạn thử nghiệm mới và nhiều nỗ lực hơn.

Có cách nào để thay đổi khung ngay cả khi bố cục tự động được bật không?

+2

tạo lối thoát cho ràng buộc của bạn và thay đổi giá trị bất cứ khi nào 'GADBannerView' xuất hiện. – Bharat

+0

bạn có thể giải thích tốt hơn với một ví dụ được không? – Fry

+0

Ok, hãy kiểm tra câu trả lời của tôi – Bharat

Trả lời

61

Cho phép các ràng buộc UITableView của bạn vào bố cục dưới cùng được đặt thành 0, tạo IBOutlet. Bây giờ hãy để chiều cao GADBannerView của bạn là 40 để thay đổi outlet.constant = 40; Để biết thêm về cách thực hiện IBOutlet và thay đổi giá trị của nó, hãy xem this hoặc this hy vọng điều này sẽ hữu ích.

Edit: (. Bởi vì đây được chấp nhận câu trả lời, tôi nghĩ rằng đó là giá trị để có một ví dụ tín dụng để @manujmv ví dụ này) Đối với những người tìm kiếm ví dụ, hãy làm theo các bước đơn giản

  1. Tạo giới hạn chiều cao cho chế độ xem của bạn trong giao diện của bạn.

  2. Sau đó thêm đối tượng IBOutlet vào lớp của bạn để có ràng buộc này. Ví dụ:

    @property (yếu, nonatomic) IBOutlet NSLayoutConstraint * heightConstraint;

Kết nối đối tượng này trong bảng điều khiển kết nối của bạn.

  1. Sau đó thay đổi giá trị của ràng buộc này bất cứ khi nào bạn cần

    self.heightConstraint.constant = 40;

+8

Một chút muộn cho bữa tiệc, nhưng thêm 'self.translatesAutoresizingMaskIntoConstraints = YES;' vào chế độ xem của bạn có lẽ sẽ loại bỏ nhu cầu sửa đổi hằng số ràng buộc. –

+2

@JohnRogers bình luận thực sự là câu trả lời đúng! – Benjamin

41

Thay vì cố gắng thay đổi khung của khung nhìn, thêm ràng buộc chiều cao bằng bố cục tự động và giảm giá trị của ràng buộc này. Thực hiện các bước dưới đây:

  1. tạo một đường viền chiều cao cho chế độ xem của bạn trong giao diện.
  2. Sau đó thêm đối tượng IBOutlet vào lớp của bạn để biết ràng buộc này. ví dụ:

    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint; 
    

    Kết nối đối tượng này trong bảng điều khiển kết nối của bạn.

  3. Sau đó thay đổi giá trị của ràng buộc này bất cứ khi nào bạn cần

    self.heightConstraint.constant = 40; 
    
7

hơn Một điều, bạn phải gọi [self.view layoutIfNeeded]; phương pháp một khi bạn changne ​​những hạn chế.

Thưởng thức :)

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