문제

Image showing shadow for selected cell on Simulator but not on Device

This one has me thrown and I'm wondering if anyone can help. I am trying to display a shadow on my selected UITableViewCell and it works fine on the Simulator but not on my iPad 3rd Gen running iOS 7.0.4

I have a subclassed UITableViewCell which is alloc/initting a subclassed UIView as its selectedBackground. All works fine other than it not displaying on the Device.

In my subclassed UITableViewCell...

- (void)awakeFromNib
{
    self.selectedBackgroundView = [[OTHD_CellSelectedView alloc] initWithFrame:self.bounds];

}

And in my OTHD_CellSelectedView...

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self createLayer];
    }
    return self;
}

- (void) createLayer
{
    CALayer *the_layer = [CALayer layer];
    [self.layer insertSublayer:the_layer atIndex:0];

    the_layer.frame = self.bounds;
    the_layer.backgroundColor = [[UIColor whiteColor] CGColor];
    the_layer.shadowColor = [UIColor blackColor].CGColor;
    the_layer.shadowOffset = CGSizeMake(0, 0);
    the_layer.shadowRadius = 10.0;
    the_layer.shadowOpacity = 0.7;
}
도움이 되었습니까?

해결책

I think you should bringToFront the cell in Table I have tried this and it is working for me... I hope this will help you:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 10;
}

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

    if (!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"Cell"];
    }

    if (indexPath.row == selected)
    {
        cell.layer.backgroundColor = [[UIColor whiteColor] CGColor];
        cell.layer.shadowColor = [UIColor blackColor].CGColor;
        cell.layer.shadowOffset = CGSizeMake(0, 0);
        cell.layer.shadowRadius = 10.0;
        cell.layer.shadowOpacity = 0.7;

        [cell.superview bringSubviewToFront:cell];
    }
    else
    {
        cell.layer.shadowOpacity = 0;
    }


    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    selected = indexPath.row;
    [tableView reloadData];

    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:(UITableViewRowAnimationNone)];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top