内容简介:翻译自: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设计-底部菜单栏(一)
- 深耕业务——商品列表底部分销商品资源广告位
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Web Designer's Idea Book
Patrick Mcneil / How / 2008-10-6 / USD 25.00
The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!