Cách phù hợp với UIImage
vào ô của UITableView
, UITableViewCell (?).Làm cách nào để thay đổi kích thước hình ảnh để phù hợp với ô UITableView?
Bạn addSubview
-cell
hoặc là có một cách để thay đổi kích thước cell.image
hoặc UIImage
trước khi nó được gán cho cell.image
?
Tôi muốn giữ kích thước ô mặc định (bất kể khi nào bạn bắt đầu với hình chữ nhật bằng 0) và muốn thêm biểu tượng như hình ảnh vào mỗi mục nhập. Hình ảnh lớn hơn một chút so với kích thước ô (kích thước hàng của bảng).
Tôi nghĩ rằng mã trông như thế này (từ đỉnh đầu của tôi):
UIImage * image = [[UIImage alloc] imageWithName:@"bart.jpg"];
cell = ... dequeue cell in UITableView data source (UITableViewController ...)
cell.text = @"bart";
cell.image = image;
gì tôi cần phải làm gì để thay đổi kích thước hình ảnh để phù hợp với kích thước tế bào? Tôi đã nhìn thấy một cái gì đó như:
UIImageView * iview = [[UIImageView alloc] initWithImage:image];
iview.frame = CGRectMake(...); // or something similar
[cell.contentView addSubview:iview]
trên sẽ thêm hình ảnh vào tế bào và tôi có thể tính toán kích thước để phù hợp với nó, tuy nhiên:
- Tôi không chắc chắn nếu có một tốt hơn cách, không phải là quá nhiều chi phí để thêm
UIImageView
chỉ để thay đổi kích thướccell.image
? - Bây giờ nhãn của tôi (
cell.text
) cần phải được chuyển vì nó bị che khuất bởi hình ảnh, Tôi đã nhìn thấy một giải pháp mà bạn chỉ thêm văn bản như một nhãn:
Ví dụ:
UILabel * text = [[UILable alloc] init];
text.text = @"bart";
[cell.contentView addSubview:iview];
[cell.contentView addSubview:label];
// not sure if this will position the text next to the label
// edited original example had [cell addSubview:label], maybe that's the problem
Ai đó có thể chỉ cho tôi đúng hướng?
EDIT: Doh [cell.contentview addSubview:view]
không [cell addSubview:view]
có lẽ tôi là nghĩa vụ phải xem xét điều này:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = ...;
CGRect frame = cell.contentView.bounds;
UILabel *myLabel = [[UILabel alloc] initWithFrame:frame];
myLabel.text = ...;
[cell.contentView addSubview:myLabel];
[myLabel release];
}
Không có đề xuất nào khác? – stefanB