2013-02-09 55 views
5

Tôi có ba UILabels trong tùy chỉnh UITableViewCell. Nó có thể là một số UILabels sẽ trống (label.text == @"")Bố cục tự động UILabels

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"EventCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


     NSString *key = [[keysArray objectAtIndex:indexPath.section] description]; 

     UILabel *nameLabel = (UILabel *)[cell viewWithTag:100]; 
     namelabel.text = @"Label 1"; 

     UILabel *locationLabel = (UILabel *)[cell viewWithTag:101]; 
     location.text = @"Label 2"; 

     UILabel *timeLabel = (UILabel *)[cell viewWithTag:102]; 
     timeLabel.text = @""; 

     return cell; 
} 

Làm thế nào tôi có thể tập trung tất cả các không trống UILabels theo chiều dọc trong các tế bào sử dụng tính năng tự động bố trí?

Đây là cách nó trông giống với ba nhãn

This is how it looks with three labels:

Làm thế nào nó trông khi một trong UILables trống

How it looks when one of <code>UILables</code> is empty

Và đây là cách tôi muốn nó nhìn:

And this is how I want it to look:

+0

Bạn có đang tạo ô bằng mã hoặc trong trình tạo giao diện không? Tại sao nó lại quan trọng nếu các nhãn trống hay không? – jrturton

+0

Trong IB. Tôi muốn nhãn của tôi được đặt ở giữa trong vùng chứa. Nó không phải là khó khăn để thực hiện, nhưng khi một trong những nhãn là trống rỗng, sau đó tôi nhận được một khoảng cách giữa hai nhãn khác mà không nhìn đẹp – Oleg

+1

Điều này có thể rất khó, vì một UILabel rỗng có thể không yêu cầu chiều rộng nhưng chắc chắn chiều cao, vì vậy bạn có thể phải viết một số mã dọc theo dòng 'của một trong các nhãn trống, xóa nhãn đó'. – 11684

Trả lời

3

Đây là khó khăn để đạt được, nhưng một phím tắt đơn giản có thể có một nhãn hiệu duy nhất thay vào đó, với ba dòng văn bản, hạn chế để lấp đầy toàn bộ chiều cao của tế bào. Sau đó, nhãn sẽ tự động căn giữa nội dung của nó theo chiều dọc.

Bạn sẽ có ba thuộc tính chuỗi trên ô thay vì ba nhãn và trình cài đặt của bạn sẽ tạo chuỗi cuối cùng (sử dụng \n cho dòng mới) và đặt văn bản của nhãn.

Nếu mỗi dòng văn bản có kiểu dáng khác nhau, không có vấn đề gì, vì bạn có thể sử dụng chuỗi được phân bổ.

+0

Cách tiếp cận rất đẹp! Sẽ làm như bạn đề nghị. Và sẽ sử dụng các chuỗi được phân bổ vì các nhãn của tôi có kiểu dáng khác nhau! Cảm ơn bạn! – Oleg

+0

Thực ra tôi đã nghĩ ai đó sẽ gợi ý thêm/sửa đổi các ràng buộc theo lập trình, nhưng giải pháp này đơn giản hơn nhiều! – Oleg

+0

Sửa đổi các ràng buộc là có thể, nhưng chắc chắn khó hơn làm theo cách này. Nó cũng có thể ảnh hưởng đến hiệu suất cuộn của bạn khi bạn muốn thêm/xóa các bản xem trước hoặc thay đổi bố cục khi mỗi ô xuất hiện trên màn hình, cả hai đều là các hoạt động tốn kém. – jrturton

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