3

我有一个控制器:

- (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");
}

为什么?

4

2 回答 2

1
-(void) setNeedsDisplay {
    [self.subviews makeObjectsPerformSelector:@selector(setNeedsDisplay)];
    [super setNeedsDisplay];
}

添加此代码,并在您的主视图中覆盖 setNeedsDisplay 方法,我希望您知道您的所有子视图都应该重绘。

于 2013-07-16T09:21:12.503 回答
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)
    }
于 2019-09-23T08:13:24.457 回答