2013-09-29 17 views
11

Trong iOS 6 và trước đó một imageView của uitableviewcell được định vị tất cả các cách trên bên trái với một bù đắp 0. Trong iOS 7 mặc dù điều này đã được thay đổi và bây giờ có một không gian 15 điểm. Tôi muốn định vị imageView giống như trong iOS 6. Tôi đã phân lớp uitableviewcell với AKHighlightableAttributedCell để xử lý văn bản được phân bổ không được đánh dấu. Vì vậy, dựa trên một số tìm kiếm tôi đã thêm:ios7 uitableviewcell hình ảnh trái bù đắp

- (void) layoutSubviews 
{ 
    [super layoutSubviews]; 
    // Makes imageView get placed in the corner 
    self.imageView.frame = CGRectMake(0, 0, 80, 80); 
} 

Vấn đề là mọi thứ khác vẫn không được định vị lại và vì vậy tôi nghĩ phải có cách tốt hơn để thực hiện việc này. Tôi đã đọc một số người đề cập đến việc sử dụng một chênh lệch âm để di chuyển mọi thứ nhưng tôi không chắc chắn làm thế nào điều này sẽ làm việc với các ràng buộc vì nó cần phải quy mô đúng cho mỗi định hướng. Có một giải pháp dễ dàng hơn cho điều này mà tôi đang thiếu? Cảm ơn bạn.

+1

Nếu bạn muốn bố cục tùy chỉnh thì đây là cách tiếp cận phù hợp. Bạn chỉ cần đặt khung của các nhãn quá. – rmaddy

+0

Cũng có lẽ một câu hỏi hay hơn sẽ là điều này. Tôi đã thêm // Nhận khung nhãn văn bản Nhãn văn bản CGRectFrame = self.textLabel.frame; textlabelFrame.origin.x = 90; self.textLabel.frame = textlabelFrame; Việc này sẽ đảm nhiệm vị trí tiêu đề. Nhưng sau đó tôi đã suy nghĩ, điều này sẽ không thay đổi trong nội dung bên trái cũng như nếu tiêu đề đủ dài? Ngoài ra, có biên giới ngăn cách các ô và tôi không biết tên của chế độ xem hoặc thuộc tính đó là gì. Cảm ơn đã giúp đỡ. –

Trả lời

7

Dường như tôi đã làm đúng cách. Phần còn thiếu liên quan đến dải phân cách giữa các trường đã thiết lập inset trên iOS 7. Bạn có thể làm điều này trong viewdidload hoặc viewwillload và thiết lập self.tableView.separatorInset = UIEdgeInsetsMake (0, 0, 0, 0);

Bạn cần thêm séc nếu chạy iOS 7 trở lên vì đây là thuộc tính mới mà tôi tin. Một tùy chọn tốt hơn có thể được đặt trong bảng phân cảnh bằng cách chọn chế độ xem bảng và sau đó đặt dấu phân tách từ mặc định thành tùy chỉnh.

Đây là phương pháp layoutSubviews định vị lại imageView và textLabel. Nếu bạn có một mô tả thêm rằng là tốt.

- (void) layoutSubviews 
{ 
    [super layoutSubviews]; 
    // Makes imageView get placed in the corner 
    self.imageView.frame = CGRectMake(0, 0, 80, 80); 

    // Get textlabel frame 
    //self.textLabel.backgroundColor = [UIColor blackColor]; 
    CGRect textlabelFrame = self.textLabel.frame; 

    // Figure out new width 
    textlabelFrame.size.width = textlabelFrame.size.width + textlabelFrame.origin.x - 90; 
    // Change origin to what we want 
    textlabelFrame.origin.x = 90; 

    // Assign the the new frame to textLabel 
    self.textLabel.frame = textlabelFrame; 
} 
+1

là cách duy nhất để ngăn chặn iOS7 thêm phần đệm bên trong ô.imageView là phân lớp ô và áp dụng ở trên vì hành vi mặc định không phản hồi việc đặt khung hình ảnhView và chèn vào không? –

+1

Nếu có, tôi không thể tìm thấy nó. Đó là một chút đau đớn và sẽ được tốt đẹp cho họ để lộ một lựa chọn cho nó. Tôi cảm thấy rằng đối với những hình ảnh không biên giới cho tableviewcells, đó là một nỗi đau lớn nhưng ít nhất nó có thể để có được xung quanh nó. Tôi đã không thấy bất kỳ vấn đề với cách tôi đã thực hiện nó cho đến nay. Tôi mở ra một câu trả lời tốt hơn nếu nó tồn tại. –

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