2014-10-09 10 views
5

Tôi có UITableView sử dụng bố cục tự động. Tôi có nhiều loại ô, nhưng bây giờ chúng ta hãy sử dụng đơn giản nhất của tất cả, một ô chỉ có một nhãn UILabel.Xóa phần đệm/lề UILabel khi sử dụng bố cục tự động

Trong tableView:heightForRowAtIndexPath: Tôi đã đoạn mã sau:

[self configureCell:self.detailsCell forRowAtIndexPath:indexPath]; 
    [self.detailsCell layoutIfNeeded]; 

    CGSize size = [self.detailsCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 
    return size.height + 1; 

nó sẽ gọi

- (void)configureCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    // ... 
    cell.detailsLabel.text = self.data.myText; 
    cell.detailsLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody]; 
    // [cell.detailsLabel sizeToFit]; <- I tried this, but didn't help 
} 

Interface builder screenshot

và tôi kết thúc việc này:

Actual cell

Hình chữ nhật màu xanh lục là ô thực tế. Hình chữ nhật màu tím là UILabel. Tôi không muốn trên cùng và dưới cùng màu tím đệm/lề. Làm sao để tôi thoát khỏi nó?

+0

Hình như bạn có các hằng với những lề thiết lập trong kịch bản này. Vì vậy, nó hoạt động chính xác như nó cần. – sha

+1

Những lề đó là màu xanh lá cây. Anh ta không muốn phần đệm bên trong nhãn. – Paludis

Trả lời

0

Bạn có thể thêm trung tâm theo chiều ngang vào UILabel. Sau đó thiết lập "Greater Than or Equal" cho mối quan hệ của "không gian trên để giám sát", và thiết lập không gian dưới cùng trong cùng một cách. Xây dựng và chạy, và bạn có thể thấy rằng chiều cao động của UILabel là theo nội dung của UILabel.

-1

Lề là do các ràng buộc tự động bạn đã thiết lập. Đặt tất cả các lề thành 0 trong thanh tra kích thước.

Trong trường hợp bạn đang sử dụng Xcode 6 & hỗ trợ iOS 8, các ràng buộc có thể được đặt thành 'lề container' thay vì 'vùng chứa'. Đó là hơi khác nhau và thiết lập một lề để container bằng không sẽ làm việc cho bạn. Bạn có thể chuyển đổi giữa chúng khi bạn thiết lập các ràng buộc trong bảng phân cảnh bằng cách nhấn 'Alt'.

+1

Những lợi nhuận đó nằm ngoài nhãn, câu hỏi là về đệm bên trong nhãn. – Paludis

5

bạn phải coi chừng "Constrain để lề:"

so sánh hai hình ảnh sau đây: Constrain to margins = YESConstrain to marings = NO

nên bỏ chọn "constrian đến lợi nhuận" trong khi thêm khó khăn mới, nên giải quyết vấn đề padding/margin của bạn :-)

Nếu bạn thích, bạn có thể hình dung các lề này bằng "Hình chữ nhật bố cục/Canvas/hiển thị" The View mà không có hình chữ nhật bố trí: Show Layout rectangles = NO và bố trí hình chữ nhật đặt để hiển thị (trong đó minh họa vấn đề của bạn khá tốt) Show Layout rectangles = YES

+0

Đáng buồn là tôi đã thử điều này. Những gì tôi đã thấy là padding không phải là xác định. Đôi khi nó cao hơn những người khác ... mặc dù có vẻ như nếu có nhiều văn bản hơn, phần đệm sẽ lớn hơn. – Eric

+0

Mh ... có thể những hạn chế của bạn đang được xác định dưới dạng bố trí (không chắc chắn tại sao, nhưng có thể). Để kiểm tra điều này, chỉ cần gõ 'po [[UIWindow keyWindow] _autolayoutTrace]' khi bị tạm dừng trong trình gỡ rối. Hoặc mặt khác, có thể thử đặt 'preferredMaxLayoutWidth' của nhãn.Điều này là quan trọng bởi vì nó là chiều rộng mà tại đó nhãn sẽ ngừng phát triển theo chiều ngang và bắt đầu phát triển theo chiều dọc. @Eric – Flori

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