我有一个径向渐变背景的ViewController。里面,我有一个UITableView单元格和部分。现在我想在滚动时在表格视图后面显示渐变。问题是,当该部分锁定在顶部时,您可以看到该部分后面的单元格。我会设置节背景颜色,但如果我这样做,它不符合径向渐变背景。无论如何,在保持clearColor背景的同时将单元格固定在部分下方?具有clearColor背景的UITableView部分?
回答
如果我明白它,你想要一个完全清晰的tableview和tableview单元格,这样你就可以看到你的视图控制器的背景。
您可以通过设置实现代码如下为没有背景
tableview.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
,也是细胞
cell.backgroundColor = [UIColor clearColor]
,如果你也想的部分是透明的,你可以用这个方法实现:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
使自定义视图(例如创建一个与透明的图像视图t .png
我希望我能正确理解你的问题。
澄清后编辑
给予外观细胞前节标题下面会停止:
使一类是UITableView的与此伊娃一个子类:
@interface CustomTableView : UITableView
{
CAGradientLayer* maskLayer;
}
显然这将创建一个渐变,但如果你想要你可以调整它或使用CALayer
而不是以编程方式创建蒙版,请创建一个具有正确宽度/高度的部分标题的.png。
ANYWAY:如果您使用CAGradientLayer
:
- (id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self)
{
[self setupGradients]; //call your method
}
return self;
}
- (void)setupGradients
{
[self addObserver:self forKeyPath:@"contentOffset" options:0 context:nil];
*/ ***** if you choose to use CALayer instead of CAGradient ****** */
//maskLayer = [[CALayer layer] retain];
//maskLayer.contents = (id) [UIImage imageNamed:@"maskLayer.png"].CGImage;
//maskLayer.backgroundColor = [UIColor clearColor].CGColor;
*/ ***** if you choose to use CALayer instead of CAGradient ****** */
maskLayer = [[CAGradientLayer layer] retain];
CGColorRef outerColor = [UIColor colorWithWhite:1.0 alpha:0.0].CGColor;
CGColorRef innerColor = [UIColor colorWithWhite:1.0 alpha:1.0].CGColor;
maskLayer.colors = [NSArray arrayWithObjects:(id)outerColor,
(id)innerColor, (id)innerColor, (id)outerColor, nil];
maskLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.9],
[NSNumber numberWithFloat:1.0], nil]; //this creates a gradient effect. Tweak these numbers for a hard line.
maskLayer.bounds = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
maskLayer.anchorPoint = CGPointZero;
self.layer.mask = maskLayer;
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
[CATransaction begin];
[CATransaction setDisableActions:YES];
maskLayer.position = CGPointMake(0, self.contentOffset.y);
[CATransaction commit];
}
在您的视图控制器
则:
CustomTableView *_tableView; //ivar
_tableView = [[CustomTableView alloc] initWithFrame:YOUR_FRAME];
基本思路是面具,你创建你的tableview的顶部罩形状这与您的部分标题大小相同。它会出现在它后面的细胞“消失”。这有点棘手,但它会起作用。
你正在理解我想要达到的目标,但不是我遇到的问题。问题在于我的部分是透明的,所以您可以看到单元格在部分后面传递。这创建了看起来很糟糕的单元格和部分的混合。虽然我很欣赏答案,谢谢 – Bobbake4
啊我现在明白了。有趣的问题。我对你如何做到这一点有一个想法,但这有点不好意思。我会在上面编辑我的答案。 – sixstatesaway
获取透明节标题而不创建自己的标题视图的简单方法。
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
if ([view isKindOfClass:[UITableViewHeaderFooterView class]]) {
UITableViewHeaderFooterView *headerView = (UITableViewHeaderFooterView *)view;
headerView.contentView.backgroundColor = [UIColor clearColor];
headerView.backgroundView.backgroundColor = [UIColor clearColor];
}
}
这段代码工作完全正常的的iOS 7
编辑 我知道这是一个有点晚,但与此相伴,你必须添加2行,确保背景颜色(和背景视图的背景颜色?)的uitableview也很清晰。
tableView.backgroundColor = [UIColor clearColor];
tableView.backgroundView.backgroundColor = [UIColor clearColor];
完美!它为我工作。非常感谢你 –
- 1. UITableView部分背景?
- 2. 分组UITableView的部分背景
- 3. UITableView部分中的背景图像隐藏部分标题
- 4. uitableviewcell背景颜色变成clearcolor
- 5. UITableView分组背景图片
- 6. UITableView的背景?
- 7. 将ImageView设置为分组的uitableview中的部分的背景
- 8. UITableView顶部的白色背景
- 9. 具有最大行数的UITableView部分
- 10. iPhone - UITableView的背景
- 11. 如何使UIViewController背景看起来像分组UITableView的背景?
- 12. 分组的UITableView透明背景 - iPhone
- 13. iPhone - UITableView分组时清晰的背景?
- 14. 背景为iphone sdk分组的uitableview
- 15. 动态创建具有独特背景的部分
- 16. UITableView部分scrollBar的背景颜色如何表示清楚?
- 17. 超过1个部分的自定义背景uitableview(IPHONE)
- 18. 当部分为空时,UITableView的背景颜色变为白色
- 19. iOS - 具有自定义单元格背景的纯UITableView
- 20. 透明背景的UITableView具有纯黑色边框
- 21. 如何让我的UINavigationController具有clearColor?
- 22. UITableView背景问题
- 23. UITableView背景图片
- 24. UITableView淡入背景
- 25. UITableView(分组样式)背景颜色
- 26. UITableView背景有奇怪的行为
- 27. UIPopoverView与UITableView部分键盘隐藏在背景触摸
- 28. 设置背景图像到UITableView部分标题
- 29. 的UITableView细胞背景
- 30. UITableView的背景图像 - iOS
你可以发布一个截图吗?难以想象这一点。 –
你可以设置tableview.backgroundColor = [UIColor clearColor]; – kamleshwar