我的视图控制器中有UITableView
,我有一个自定义UITableViewCell
类,用于执行绘图,绘图文本,线条等。
所有这些都发生在drawRect:
方法中。除此之外,我已经看到了一些与drawRect:
他们是..
-(void)setNeedsDisplay
-(void)setSelected:(BOOL)selected animated:(BOOL)animated
-(void)setEditing:(BOOL)editing animated:(BOOL)animated
-(void)layoutSubviews
我的问题是,我们是如何/何时使用这些方法的?
PS:我的实际问题是,当我点击这个自定义单元格时,我使用drawRect绘制的图像和文本被选择背景隐藏了。这是因为系统会使用选择背景覆盖UITableViewCell的所有子视图。但是,我想在点击时仅改变单元格的背景颜色。
只是困惑!!
答案 0 :(得分:0)
您可能不希望在-drawRect:
中执行所有图像,文本和线条绘制(除非您真的是这个意思!)。相反,您应该将子视图添加到-layoutSubviews
。
现在,如果你所做的只是自定义自定义表格单元格的视图层次结构,请确保将所有子视图添加到单元格contentView
。有很多例子可以解释如何做到这一点。当你点击单元格时,应处理图层排序,iOS会添加选择视图。
至于您的其他问题,您可能希望阅读UIView
生命周期中的文档:
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/
答案 1 :(得分:0)
将您的子视图添加到单元格cell.selectionStyle = UITableViewCellSelectionStyleNone
而不是单元格本身。
此外,您可能希望drawRect:
避免iOS进行任何突出显示。
如果您正在继承UITableViewCell并覆盖其contentView
,那么这将无法正常工作。而是将子视图添加到drawRect
,并在该子项中实现-(void)method:(UIView *)_view {
UIButton*Touch1= [UIButton buttonWithType:UIButtonTypeRoundedRect];
[Touch1 addTarget:self action:@selector(TouchButton1:) forControlEvents:UIControlEventTouchUpInside];
[Touch1 setFrame:CGRectMake(50,50, 100, 100)];
Touch1.translatesAutoresizingMaskIntoConstraints = YES;
[Touch1 setBackgroundImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];
[Touch1 setExclusiveTouch:YES];
[_view addSubview:Touch1];
NSLog(@"hi ");
}
。