我搜索过这个论坛、谷歌和其他论坛,但没有找到我的特定问题的答案。
基本上,我有一个UIView
其中包含UITableView
。我跟着这个tutorial http://www.cocoanetics.com/2011/08/adding-fading-gradients-to-uitableview/并且取得了部分成功。问题是梯度。我后面有一个背景图片UITableView
。因此,当单元格接近渐变时,我希望显示背景,而不是白色。
我也发现了这个post https://stackoverflow.com/questions/8378074/calayer-compositingfilter-ios-5-and-coreimage#comment10446509_8379795这是我找到教程的地方,但我不想用我自己对马特的问题劫持该帖子。
任何朝着正确方向的帮助都会很棒!
EDIT1:我知道我可以使用另一张带有背景图像和中间切口的图像,但我正在寻找一种避免使用 PNG 的解决方案(如果可能的话)。
EDIT2:这是我现在得到的图像:
EDIT3:
这是我的代码:
Header:
@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]];
}
}