我有一个控制器:
- (void)viewDidLoad {
[super viewDidLoad];
// Add a scroolView
self.scroolViewDay.scrollEnabled = YES;
// Compute the content Size of the TableDays
self.scroolViewDay.contentSize = CGSizeMake(self.scroolViewDay.frame.size.width,
80 * 48); // TO MODIFY!
[self.scroolViewDay addSubview:self.tableDays];
[self.tableDays setNeedsDisplay];
}
控制器有XIB
所在的UIScrollView
。
自定义视图 TableDays 具有永远不会调用的自定义drawRect
:
- (void)drawRect:(CGRect)rect {
NSLog(@"sono in drawRect");
}
为什么?
答案 0 :(得分:1)
-(void) setNeedsDisplay {
[self.subviews makeObjectsPerformSelector:@selector(setNeedsDisplay)];
[super setNeedsDisplay];
}
添加此代码,并在主视图中覆盖setNeedsDisplay方法,我希望您知道应重新绘制所有子视图。
答案 1 :(得分:0)
在以编程方式添加它之前,请使用正确的约束从storyboard
添加它,并查看它是否被调用。
就我而言,我添加到此自定义视图的约束存在问题。
这是有问题的代码,
let header = HeaderBackgroundView(frame: view.bounds)
scrollView.addSubview(header)
header.snp.makeConstraints { make in
make.leading.equalTo(scrollView.snp.leading)
make.trailing.equalTo(scrollView.snp.trailing)
make.top.equalTo(scrollView.snp.top)
make.height.equalTo(200)
}
我通过添加中心x约束对其进行了修复:
header.snp.makeConstraints { make in
make.leading.equalTo(scrollView.snp.leading)
make.trailing.equalTo(scrollView.snp.trailing)
make.top.equalTo(scrollView.snp.top)
make.centerX.equalTo(scrollView.snp.centerX) // this line.
make.height.equalTo(200)
}