2009-05-18 39 views
6

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:

  1. 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ước cell.image?
  2. 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]; 
} 
+0

Không có đề xuất nào khác? – stefanB

Trả lời

2

This site posts code trên rescaling một UIImage*. Bạn có thể chơi với tỷ lệ thu phóng để có tỷ lệ phù hợp cho số UIImage* bạn đang sử dụng để giảm tỷ lệ.

+0

Thú vị, tôi sẽ có một cái nhìn, cảm ơn cho các liên kết – stefanB

1

Nếu bạn có quyền truy cập vào trung tâm devloper táo, có video về chia tỷ lệ hình ảnh cho chế độ xem bảng. Nó tập trung nhiều hơn vào các vấn đề hiệu suất và các cuộc đàm phán rất nhiều về luồng, nhưng anh ta cho thấy một số mã mẫu được sử dụng để thay đổi kích thước hình ảnh.

Tên video: "Phát triển ứng dụng iPhone hiệu quả - Phần 2" khoảng 30 phút.

+0

cảm ơn, tôi sẽ kiểm tra xem nó ra – stefanB

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