2014-11-06 3 views
1

фон: У меня есть подкласс UITableViewCell которого расположение определяются как прототип ячейка в раскадровке. Один из ячеек IBOutlets является подклассом UIView, который я сделал под названием BorderedProfileImageView. drawRect: функция этого класса переопределяется следующим образом:DrawRect пользовательского UIView подкласса не вызывается внутри UITableViewCell

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]); 
    CGContextSetLineWidth(context, 1.f); 
    CGFloat halfWidth = self.bounds.size.width/2; 
    NSInteger radius = sqrt(pow(halfWidth, 2) + pow(halfWidth, 2)) - 8.5; 
    CGContextAddArc(context,self.bounds.size.width/2,self.bounds.size.height/2,radius,0,2*3.1415926535898,1); 
    CGContextStrokePath(context); 
} 

Это добавляет синее кольцо в UIView.

Проблема: не
никогда не появляется синее кольцо, и BorderdProfileImageView «s drawRect: функция никогда не вызывается. Ячейка все еще рисует, UIImageView, который находится внутри BorderdProfileImageView. Я звоню setNeedsDisplay на BorderedProfileImageView при настройке ячейки.

Почему drawRect: не звонит?

ответ

0

Я понял.

Объект в ИБ, который был установлен в BorderedProfileImageView, первоначально был UIImageView. Изменение этого объекта на UIView и повторное соединение привели к желаемому поведению.

Смежные вопросы