2015-04-18 18 views
8

XCode 6.3/Swift 1.2 có thêm các lề bổ sung vào contentView của UITableViewCell không? Trước khi cập nhật, tôi đã có một UIView tùy chỉnh mở rộng tất cả các cách trên màn hình trong các tế bào của tôi. Ví dụ:XCode 6.3 thêm lề vào tableviewcell

enter image description here

Bây giờ, tất cả mọi thứ trong tế bào dường như có lợi nhuận bổ sung mà tôi không có ý tưởng nơi họ đến từ đâu.

enter image description here

Lưu ý rằng độ rộng của những quan điểm không thay đổi trong bất kỳ cách nào trong mã và bên phải và trái thường bị hạn chế như sau:

enter image description here

Cũng lưu ý rằng tôi đang sử dụng tableView.separatorStyle = .None. Tôi thêm thực tế này vì vì một lý do nào đó trong một trong số tableView s của tôi có dấu phân tách mặc định, nó không xuất hiện để thêm các lề bổ sung này.

Có ai biết nếu họ đã thực hiện một số thay đổi kỳ lạ trong XCode 6.3 không? Hành vi này xảy ra trực tiếp sau khi cập nhật.

Edit: enter image description here

+0

Tôi đã chạy ứng dụng này trên iOS 8 trước khi cập nhật và nó trông giống như ảnh chụp màn hình đầu tiên. – ad121

+0

tôi không biết những gì khác tôi có thể thêm. Tôi chỉ thử nghiệm nó với các ràng buộc -16 ở mỗi bên và nó mở rộng một cách chính xác trên màn hình, nhưng tôi không biết tại sao lề của tôi lại bị đẩy lên (tôi không muốn sử dụng sửa lỗi mà không biết nguyên nhân như thế này) . Tôi in chiều rộng của contentView, xem, tableView, và tế bào chính nó và họ là tất cả 375 trên iphone 6 nhưng khối màu xanh là 359 chiều rộng với những khó khăn đưa ra trong câu hỏi. – ad121

+0

Nhưng tại sao bạn lại tạo ra những hạn chế đối với lợi nhuận ở nơi đầu tiên? Đặt chúng vào các cạnh thực tế của chế độ xem nội dung và sau đó các thay đổi ở lề sẽ không ảnh hưởng đến bạn. Tôi nhận ra rằng không trả lời câu hỏi gốc, nhưng giả định rằng các lề sẽ là 8 và thiết lập các ràng buộc để -8 để bù đắp là khá hấp dẫn để bắt đầu. – matt

Trả lời

19

Nhìn kỹ bức ảnh này màn hình của Kích thanh tra cho một hạn chế hàng đầu:

enter image description here

Xem cách "So với lợi nhuận" được chọn? Đó là vấn đề của bạn. Nếu lề thay đổi, cạnh trái của bạn thay đổi. Bỏ chọn mục menu và sau đó thay đổi Hằng số thành 0. Làm điều đó cho ràng buộc theo sau quá, và các vấn đề của bạn sẽ kết thúc.

Bây giờ, hãy giải quyết vấn đề sâu hơn: điều gì đã thay đổi? Bạn hoàn toàn đúng, một cái gì đó đã làm. Tôi tin rằng họ đã sửa một lỗi và bạn đã bị bắt gặp trong quá trình sửa lỗi. Việc ghi nhật ký cho tôi biết rằng ô của preservesSuperviewLayoutMarginstrue và rằng lợi nhuận của bảng là 0,16,0,16. Điều này đúng ngay cả trên iOS 8.2, do đó, lợi nhuận hiệu quả trên iOS 8.2 nên là 16. Nhưng chúng là 8, như thể preservesSuperviewLayoutMarginsfalse. Nhưng trong iOS 8.3, cài đặt này được tuân thủ đúng cách - với kết quả bạn đã quan sát.

Như vậy, khác cách để khắc phục vấn đề có thể đã được rời khỏi khó khăn của bạn như họ đang có, nhưng để thiết lập mỗi preservesSuperviewLayoutMargins-false trong cellForRowAtIndexPath: tế bào. Điều này làm việc tốt như nhau để làm cho kết quả giống hệt nhau trong cả hai hệ thống.

EDIT Tin tốt: có vẻ như thay đổi này được hoàn nguyên trong iOS 9. Do đó, không thay đổi, các ô của bạn sẽ giống nhau trong iOS 9 như đã làm trong iOS 8.2 và trước đó.

+0

Chỉnh sửa để giải thích hiện tượng cơ bản: bạn hoàn toàn đúng, lợi nhuận đã thay đổi! Cảm ơn bạn rất nhiều vì đã chỉ ra điều này. – matt

+0

..đó là một số lần gỡ lỗi ấn tượng! Đã phải xem xét tất cả các ràng buộc của ô xem bảng của tôi. Điều này cố định tất cả chúng. Cảm ơn bạn. – nmdias

+0

Bạn thực sự bị bắt bởi các ràng buộc dựa trên margin mới của Apple. Khi bạn tạo một ràng buộc ban đầu bằng cách sử dụng điều khiển-kéo, nó sẽ được dựa trên lề _unless bạn giữ phím Option_ để có được biến thể không lề. Do đó, các ràng buộc dựa trên lợi nhuận là một công nghệ không tham gia; bạn _can_ chọn không tham gia, nhưng hầu hết mọi người sẽ không biết làm như vậy và sẽ kết thúc bằng cách sử dụng chúng mà không hề nhận ra. – matt

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