UITableView с прозрачным градиентом сверху и снизу

Я искал этот форум, Google и другие форумы и не нашел ответа на мою конкретную проблему.

По сути, у меня есть UIView , который содержит UITableView . Я следил за этим учебным пособием , и он был частично успешным. Проблема в градиенте. У меня есть фоновое изображение за UITableView . Поэтому, когда ячейка приближается к градиенту, я хочу, чтобы отображался фон, а не белый.

Я также нашел этот пост , в котором я нашел руководство, но я не хотел использовать его своими собственными вопросами для Мэтта.

Любая помощь в правильном направлении была бы замечательной!

РЕДАКТИРОВАТЬ1: Я знаю, что могу использовать другое изображение с фоновым изображением и вырезом посередине, но я ищу решение, которое ИЗБЕГАЕТ использования PNG, если это возможно.

EDIT2: вот изображение того, что я получил сейчас:

enter image description here

EDIT3:

Вот мой код:

Заголовок:

@interface MyView : UIViewController  {
    CAGradientLayer *_maskLayer;
    UITableView *_tableView;
}

@property (nonatomic, retain) CAGradientLayer *maskLayer;
@property (nonatomic, retain) IBOutlet UITableView *tableView;

Реализация:

@implementation HighScoresView_iPhone

@synthesize tableView = _tableView;
@synthesize maskLayer = _maskLayer;

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    if (![self maskLayer]) {
        [self setMaskLayer:[CAGradientLayer layer]];
        CGColorRef outerColor = [UIColor colorWithWhite:1.0 alpha:1.0].CGColor;
        CGColorRef innerColor = [UIColor colorWithWhite:1.0 alpha:0.0].CGColor;

        [[self maskLayer] setColors:[NSArray arrayWithObjects:
                                     (id)outerColor, 
                                     (id)innerColor, 
                                     (id)innerColor, 
                                     (id)outerColor, 
                                     nil
                                     ]
         ];
        [[self maskLayer] setLocations:[NSArray arrayWithObjects:
                                       [NSNumber numberWithFloat:0.0], 
                                       [NSNumber numberWithFloat:0.2], 
                                       [NSNumber numberWithFloat:0.8], 
                                       [NSNumber numberWithFloat:1.0], 
                                       nil
                                       ]
        ];
        [[self maskLayer] setBounds:CGRectMake(0, 0, [[self scoreTableView] frame].size.width, [[self scoreTableView] frame].size.height)];
        [[self maskLayer] setAnchorPoint:CGPointZero];
        [[[self scoreTableView] layer] addSublayer:[self maskLayer]];
    }
}

7
задан Community 23 May 2017 в 12:02
поделиться