2009-05-23 27 views
23

Trên iPhone, làm thế nào để bạn tìm ra chiều rộng của chế độ xem nội dung của ô xem bảng khi hiển thị chế độ xem phụ kiện nhất định (chỉ báo tiết lộ, v.v ...)?Độ rộng của nội dung UITableViewCell với một loại phụ kiện nhất định

Tôi cần điều này để tính chiều cao ô chính xác cho các ô có chứa văn bản có chiều dài thay đổi. Nhưng khi bảng xem đại biểu được yêu cầu cho một chiều cao tế bào, nó không thực sự có thể hiện tế bào thực tế, do đó, nó không thể chỉ truy vấn xem nội dung giới hạn trực tiếp.

Tôi có thể dễ dàng mã hóa lề 20 pixel ở bên phải có vẻ chính xác cho chế độ xem bảng kiểu đồng bằng theo hướng dọc với chỉ báo tiết lộ, nhưng muốn thực hiện theo cách phù hợp để làm việc nếu Apple quyết định chỉnh lề.

(Điều này có liên quan đến this question.)

Trả lời

2

Cá nhân, tôi sẽ chỉ mã hóa cứng các giá trị - đơn giản hơn và mọi thứ sẽ phá vỡ theo cách có thể dự đoán được.

Nhưng tôi đã làm điều này theo lập trình, tôi sẽ tạo ra một UITableViewCell, thiết lập các thuộc tính chỉnh sửa/phụ kiện bạn cần đo lường, và sau đó hỏi nó contentView lớn bao nhiêu.

Tất nhiên tôi có thể sẽ lưu trữ rất nhiều điều này khi thực hiện yêu cầu UITableView yêu cầu bạn cung cấp thông tin về chiều cao cho âm thanh như tôi sẽ làm chậm (kiểm tra với một profiler trước).

+0

Vâng, tôi đã kết thúc việc viết mã này (20 pixel). Tôi nghĩ rằng tôi đã thử tạo một ô giả như bạn đã mô tả khi tôi lần đầu tiên thử điều này, và nếu tôi nhớ chính xác, nó không hoạt động. Tôi nghĩ rằng bố cục chỉ được đặt khi một ô thực sự được hiển thị trong chế độ xem bảng. –

+0

Ồ! Rất vui được nghe bạn tìm thấy một giải pháp mặc dù. –

0

tôi sẽ có một lớp con của UITableViewCell chứa tất cả các phần tử con của nó. Bạn có thể cange khung của các yếu tố nhất định khi tế bào đi vào và tồn tại chế độ chỉnh sửa. Có một ví dụ điển hình về điều này trong hướng dẫn Lập trình xem bảng của Apple trong phần tạo một ô xem bảng tùy chỉnh.

0

Tôi tin rằng thuộc tính contentView của UITableViewCell là chế độ xem có chứa nhãn của bạn, do đó, chiều rộng của kích thước đó phải là kích thước có sẵn để sử dụng.

+0

Vấn đề là đại biểu xem bảng cần biết chiều cao của các ô không hiển thị và do đó không có cá thể tế bào thực tế để lấy contentView. Tôi cho rằng tôi chỉ có thể nhận được _a_ contentView của ô hiển thị và giả sử tất cả các ô khác sẽ có cùng chiều rộng contentView. –

+0

Bạn có thể thử loại bỏ phương thức chiều cao khỏi đại biểu, sau đó thiết lập chiều cao khi thiết lập ô, sử dụng phương thức trong UITableView –

+0

@Ed - điều đó sẽ không hoạt động vì bảng đại biểu xem bảng phải cho biết bảng xem chiều cao của tất cả các ô ngay cả trước khi chúng được thiết lập sao cho chế độ xem cuộn có kích thước chính xác. –

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