UITableViewCell Separator disappearing in iOS7

前端 未结 30 737
轮回少年
轮回少年 2020-12-07 08:31

I have some strange issue with UITableView only in iOS 7.

UITableViewCellSeparator disappears above the first row and below the last row. S

30条回答
  •  情歌与酒
    2020-12-07 09:08

    Complement to the answer of airpaulg.

    So basically one has to implement two UITableDelegate methods. Here's my solution which works on both iOS7 and iOS6.

    #define IS_OS_VERSION_7 (NSFoundationVersionNumber_iOS_6_1 < floor(NSFoundationVersionNumber))
    
    #define UIColorFromRGB(hexRGBValue) [UIColor colorWithRed:((float)((hexRGBValue & 0xFF0000) >> 16))/255.0 green:((float)((hexRGBValue & 0xFF00) >> 8))/255.0 blue:((float)(hexRGBValue & 0xFF))/255.0 alpha:1.0]
    

    // This will hide the empty table grid below the cells if they do not cover the entire screen

    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
    {
        UIView *view = nil;
    
        if (IS_OS_VERSION_7 /* &&  */)
        {
            CGFloat height = 1 / [UIScreen mainScreen].scale;
            view = [[UIView alloc] initWithFrame:CGRectMake(0., 0., 320., height)];
            view.backgroundColor = UIColorFromRGB(0xC8C7CC);
            view.autoresizingMask = UIViewAutoresizingFlexibleWidth;
        }
        else
        {
            view = [UIView new];
        }
        return view;
    }
    
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
        if (IS_OS_VERSION_7 /* &&  */)
        {
            return 1 / [UIScreen mainScreen].scale;
        }
        else
        {
            // This will hide the empty table grid below the cells if they do not cover the entire screen
            return 0.01f;
        }
    }
    

提交回复
热议问题