Я искал этот форум, Google и другие форумы и не нашел ответа на мою конкретную проблему.
По сути, у меня есть UIView
, который содержит UITableView
. Я следил за этим учебным пособием , и он был частично успешным. Проблема в градиенте. У меня есть фоновое изображение за UITableView
. Поэтому, когда ячейка приближается к градиенту, я хочу, чтобы отображался фон, а не белый.
Я также нашел этот пост , в котором я нашел руководство, но я не хотел использовать его своими собственными вопросами для Мэтта.
Любая помощь в правильном направлении была бы замечательной!
РЕДАКТИРОВАТЬ1: Я знаю, что могу использовать другое изображение с фоновым изображением и вырезом посередине, но я ищу решение, которое ИЗБЕГАЕТ использования PNG, если это возможно.
EDIT2: вот изображение того, что я получил сейчас:
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]];
}
}