内容简介:翻译自:https://stackoverflow.com/questions/9105773/uitableview-with-transparent-gradient-at-top-and-bottom
我搜索了这个论坛,谷歌和其他论坛,但没有找到我的特定问题的答案.
基本上,我有一个包含UITableView的UIView.我跟着这个 tutorial 并且部分成功了.问题是梯度.我在UITableView后面有一个背景图片.因此,当细胞接近渐变时,我希望背景显示,而不是白色.
我也找到了这个 post ,这是我找到教程的地方,但我不想用我自己的问题来劫持那个帖子.
任何正确方向的帮助都会很棒!
编辑1:我知道我可以使用背景图像和中间剪切的另一个图像,但我正在寻找AVOIDS使用PNG的解决方案,如果可能的话.
编辑2:这是我现在得到的图像:
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]]; } }
您可以使用CALayer掩码属性执行此操作.但是您无法在表视图的自己的图层上设置蒙版,因为该蒙版将与表的行一起滚动.相反,将您的表视图放在您为此创建的新superview(UIView类)中.称之为tableMaskView.
新的superview应将其backgroundColor属性设置为UIColor.clearColor,并将其opaque属性设置为NO.然后你可以像这样设置它的面具:
CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = self.tableMaskView.bounds; gradient.colors = [NSArray arrayWithObjects: (__bridge id)UIColor.clearColor.CGColor, UIColor.whiteColor.CGColor, UIColor.whiteColor.CGColor, UIColor.clearColor.CGColor, nil]; gradient.locations = [NSArray arrayWithObjects: [NSNumber numberWithFloat:0], [NSNumber numberWithFloat:1.0/16], [NSNumber numberWithFloat:15.0/16], [NSNumber numberWithFloat:1], nil]; self.tableMaskView.layer.mask = gradient;
使用图层蒙版不是最有效的方法,但它是最容易编程的.测试它是否足够快.
翻译自:https://stackoverflow.com/questions/9105773/uitableview-with-transparent-gradient-at-top-and-bottom
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS WHGradientHelper(线性、径向渐变;渐变动画;Lable字体渐变及动画)
- 紧贴底部的页脚
- Android实现底部状态栏切换
- 定制化你的ReactNative底部导航栏
- 项目实践-MD设计-底部菜单栏(一)
- 深耕业务——商品列表底部分销商品资源广告位
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。