2013-05-13 37 views
10

Có ô bảng tùy chỉnh với ô riêng .XIB và .h và .m. Không có gì quá lạ mắt. Khi thiết bị quay, chiều rộng ô không thay đổi. Ô bảng cho đường dẫn chỉ mục được gọi, nhưng chiều rộng không thay đổi (nói từ dọc sang ngang). Điều gì sẽ ngăn chặn điều này?Ô bảng tùy chỉnh iOS không tự động thay đổi kích thước chiều rộng cho thay đổi định hướng

Không muốn đặt kích thước khung hình.

Sẽ đăng mã nếu cần, nhưng có thể chúng tôi có thể trả lời bằng mã ngoài trên mã này.

Ngay cả khi khởi động ứng dụng ở chế độ ngang cũng không đặt chiều rộng lớn hơn cho ô.

[Thêm]

Cũng không hoạt động với các ô không tùy chỉnh.

self.tableViewSelection.autoresizesSubviews = true; 
self.tableViewSelection.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
self.view.autoresizesSubviews = true; 

XIB cho bảng có kích thước dường như được thiết lập chính xác (không hỗ trợ IOS6).

+0

Một số ảnh chụp màn hình sẽ hữu ích. Thật khó để nói ở đây những gì thực sự không được thay đổi kích cỡ. – matt

+0

Tôi đồng ý, nhưng câu hỏi này không còn quan tâm đến tôi nữa ngay bây giờ. Chúng tôi có thể xóa nó nếu người kiểm duyệt muốn. – ort11

Trả lời

1

Ô sẽ tự động có cùng chiều rộng với chế độ xem bảng. Vì vậy, những gì không thay đổi kích thước có thể là xem bảng. Bạn cần phải cung cấp cho nó những hạn chế thích hợp (nếu sử dụng Autolayout, mặc định trong iOS 6) hoặc mặt nạ tự động (nếu không) sao cho nó sẽ thay đổi kích thước để phản hồi lại kích thước chế độ xem cấp cao nhất để bù cho xoay thiết bị.

+0

Vâng, đó là nghĩa vụ phải xảy ra. Đối với một số lý do trong dự án này nó không phải là và cố gắng tìm ra nó. Đã thử trên mã cứng mà không có may mắn. Tôi giả sử rằng kích thước chính xác của ô được đặt bởi chế độ xem bảng sau (ô cho chỉ mục) và trước đó (ô sẽ hiển thị). – ort11

+0

Được cấu trúc lại một chút và hoạt động tốt ngay bây giờ. Không chắc nó là gì. – ort11

1

Tôi cũng gặp phải sự cố tương tự này khi tự động chỉnh các ô tùy chỉnh khi xoay. Sau khi chiến đấu tôi đã nhận được giải pháp như cho phép cell.contentView, vì tôi đang thêm các khung nhìn của tôi dưới dạng subview vào trong cell.contentview.

tôi đã sử dụng sau mã và mã của tôi hoạt động tốt :)

cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 
+0

Những gì bạn đã đề cập là đúng, nhưng các mặt nạ tự động hóa sẽ được đặt như sau: (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight). Tôi cũng đã có những nghi ngờ tương tự như bạn đã đề cập trong mã của bạn, vì vậy tôi đăng một câu hỏi trong SO và bạn có thể xem nó để bạn tham khảo: http://stackoverflow.com/questions/7754851/autoresizing-masks-programmatically-vs-interfact -builder-xib-nib –

+0

Mã này không còn hoạt động như Swift2 nữa. Tất cả các hằng số này đều kết thúc các số nhận dạng chưa được giải quyết. – zeeple

7

Nếu bạn đang trọng các layoutSubviews hoặc phương pháp khác, đừng quên gọi nó là siêu:

override func layoutSubviews() { 
    //... 

    super.layoutSubviews() 
} 

Không làm điều này sẽ dẫn đến sự cố bạn đang gặp phải.

1

Đối nhanh chóng 2, nó sẽ là:

cell.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
0

Trong Swift 4, các tác phẩm dưới đây.

cell.cellUIView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

Lưu ý:cellUIView là một UIView tôi thêm vào contentView của các tế bào nguyên mẫu.

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