2015-07-04 15 views
6

PS: Tôi có thể đăng một video nhỏ nhưng có vẻ như không cần thiết.Dấu phân cách UITableView nhấp nháy trong khi chuyển đổi ứng dụng

Tạo dự án mẫu bằng Xcode 6.4 (hiện đang sử dụng 6E35b). Tạo một lớp con UITableViewController đơn giản và hiển thị nó bằng cách sử dụng bảng phân cảnh hoặc lập trình.

Thử chuyển đổi ứng dụng. Dường như bộ phân tách xem bảng bất cứ khi nào ứng dụng chạy ở chế độ nền hoặc nền trước. Nó không Flickr trong khi di chuyển, vv

Để xem nó tốt hơn, sử dụng:

self.tableView.backgroundColor = [UIColor whiteColor]; 
self.tableView.rowHeight = 75.0f 
self.tableView.separatorColor = self.view.tintColor; 

Tôi không chắc chắn lý do tại sao điều này xảy ra. Tôi đã gọi iPhone 6/6 Plus: UITableView separator flickering and different thickness nhưng các dự án mặc định luôn có tệp IB màn hình khởi chạy.

Bạn có thể thấy sự cố trong ứng dụng cài đặt mặc định trên iOS. Đối với hầu hết các phần, điều này không trở thành một vấn đề, trừ khi bạn đang dựng hình ảnh và đột nhiên các dòng phân cách trắng flickr.

EDIT 1: Vấn đề lớn nhất đối với tôi là ngay cả khi tôi sử dụng:

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 

tách được trả lại trong giây lát và sau đó biến mất; chính xác giống như trong các trường hợp khác. Xem CHỈNH SỬA 2 để biết thêm chi tiết.

EDIT 2 (07/04/15, 8.46PM): Tôi muốn cung cấp thêm một số ví dụ tại đây. Hành vi nhấp nháy mà tôi đang quan sát nổi bật hơn nhiều với các ô xem bảng tùy chỉnh (nghĩa là nơi bạn có quyền tự do hiển thị chế độ xem hình ảnh của riêng mình với cài đặt thuộc tính tùy chỉnh, v.v.).

Quan sát khác là hành vi nhấp nháy cụ thể (ví dụ: trong trường hợp separatorStyle == UITableViewCellSeparatorStyleNone) không đáng chú ý với các ô chỉ văn bản. Nó là chủ yếu đáng chú ý trong trường hợp hình ảnh được trả lại trong các ô xem bảng.

  1. Dưới đây là một ví dụ của một tế bào xem bảng:

    @interface BTableViewCell() 
    
    @property (nonatomic, strong, readwrite) UIImageView *mainImageView; 
    
    @end 
    
    @implementation BTableViewCell 
    
    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
    { 
        self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
        if (self) 
        { 
         [self commonInit]; 
        } 
        return self; 
    } 
    
    - (id)initWithCoder:(NSCoder *)aDecoder 
    { 
        self = [super initWithCoder:aDecoder]; 
        if (self) 
        { 
         [self commonInit]; 
        } 
        return self; 
    } 
    
    - (void)commonInit 
    { 
        // Initialize Avatar Image 
        self.mainImageView = [[UIImageView alloc] init]; 
        _mainImageView.translatesAutoresizingMaskIntoConstraints = NO; 
        _mainImageView.layer.masksToBounds = YES; 
        [self.contentView addSubview:_mainImageView]; 
    
        [self configureConstraintsForImageView]; 
    } 
    
    - (void)configureConstraintsForImageView 
    { 
        [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:_mainImageView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeHeight multiplier:1 constant:0]]; 
        [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:_mainImageView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeWidth multiplier:1 constant:0]]; 
    } 
    
    @end 
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
        BTableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"]; 
    
        NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpeg"]; 
        UIImage* image = [UIImage imageWithContentsOfFile:imagePath]; 
        cell.mainImageView.image = image; //ignore unoptimized load 
        return cell; 
    } 
    
  2. Các nhấp nháy gần như biến mất nếu masksToBounds tài sản là false. Tôi không chắc chắn lý do tại sao đây là trường hợp hoặc nếu đây là cách dự định.

  3. Thay vì sử dụng ô xem bảng tùy chỉnh, hãy sử dụng lớp UITableViewCell mặc định.

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
        UITableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"]; 
    
        NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpeg"]; 
        UIImage* image = [UIImage imageWithContentsOfFile:imagePath]; 
        cell.backgroundView = [[UIImageView alloc] initWithImage:image]; 
        return cell; 
    } 
    

Đó là cần lưu ý rằng các hành vi leo lét cho # 2# 3 là nhiều hơn hoặc ít hơn như nhau. Nó tinh tế hơn nhiều so với một trong số # 1, nhưng vẫn đáng chú ý.

+0

tôi đã không điều tra vấn đề này triệt để chưa nhưng những ảnh hưởng nhấp nháy trong dải phân cách rất gợi nhớ đến một vấn đề tôi gặp phải với UISegmentedControl. Có thể cuộc trò chuyện SO đó sẽ giúp bạn: http://stackoverflow.com/questions/18894772/uisegmentedcontrol-in-ios-7-divider-image-is-wrong-during-animation/20654744#20654744 – Lobsterman

Trả lời

0

Tôi đã gặp sự cố tương tự trong một thời gian. Tôi đã làm một nghiên cứu dài về cách tôi có thể xử lý vấn đề này và không bao giờ tìm thấy một cái gì đó hữu ích.Tôi đã kết luận rằng không ai nhận thấy và bất kỳ ai nhận thấy không quan tâm về dòng 0.6f của bảng hiển thị của bảng điều khiển. Nhưng tôi tìm thấy một giải pháp nhỏ nếu bạn vẫn ned này. Bên cạnh việc sử dụng UITableViewCellSeparatorStyleNone cũng làm [self.tableView setSeparatorColor:[UIColor myColor]] và điều cuối cùng bạn có thể làm, nếu bạn có thể có khoảng cách giữa các ô như ứng dụng facebook ios, sau đó đặt màu nền thành một số màu xám.

1

Thêm

Renders with edge antialiasing: YES 

Trong ứng dụng plist của bạn

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