Enc*_*ada 8 cocoa-touch objective-c ios
我有一个常规风格的UITableView-具有白色背景和灰色水平线来分隔行.
我有另一个自定义UIView,它只是一个填充了redColor的100x100矩形.
如何将后者放入前者,使其出现在水平线上,但仍然是表视图的"部分",因为当我滚动表视图时,红色视图会随之滚动?事实上,我也应该能够将手指放在红色区域并滚动表格视图.
再一次,如果红色视图被放置重叠一些水平行,它应该出现在的行.可悲的是,当我只是将红色视图作为子视图添加到表视图时,水平线会越过红色视图; 看这个截图.
如何实现这一目标?
rob*_*off 12
处理红色方块堆叠顺序的正确位置在layoutSubviews方法中.layoutSubviews每次添加或删除子视图时(以及其他时间),表视图都会自行发送.
你需要创建一个UITableView具有红色方块引用的子类:
@interface MyTableView : UITableView
@property (weak, readonly) IBOutlet UIView *redSquare;
@end
Run Code Online (Sandbox Code Playgroud)
您可以redSquare以任何您想要的方式初始化.我只是将它与表视图一起放在我的笔尖中,并将其移动为表视图的子视图awakeFromNib:
@implementation MyTableView
@synthesize redSquare = _redSquare;
- (void)awakeFromNib {
[self addSubview:self.redSquare];
}
Run Code Online (Sandbox Code Playgroud)
无论如何,要确保红色方块始终位于表格单元格和网格线之上,请按以下方式覆盖layoutSubviews:
- (void)layoutSubviews {
[super layoutSubviews];
[self bringSubviewToFront:self.redSquare];
}
Run Code Online (Sandbox Code Playgroud)
编辑
如果您尝试在视图上方添加视图(隐藏线条),请尝试使用– bringSubviewToFront:它将其带到表格视图的前面.
[self.tableView bringSubviewToFront:redView];
Run Code Online (Sandbox Code Playgroud)
其他
将视图添加self.tableView.tableHeaderView到此视图 将其放在表视图上方,并将使用表视图滚动.
UIView *redView = [[UIView alloc]init];
redView.frame = //set the frame
redView.backgroundColor = [UIColor redColor];
self.tableView.tableHeaderView = redView;
Run Code Online (Sandbox Code Playgroud)
祝好运
| 归档时间: |
|
| 查看次数: |
5231 次 |
| 最近记录: |