2015-11-14 1 views
1

Я подклассифицирую CALayer и выполняя индивидуальный чертеж в методе drawInContext:.сделать пользовательский подкласс CALayer автоматически перерисовываться после добавления в супер-слой

Проблема в том, мне нужно вручную вызвать setNeedsDisplay: после того как я добавить экземпляр моего подкласса к superlayer, что-то вроде:

MyCustomLayer *instance = [MyCustomLayer layer]; 
//do some configurations 
[self.view.layer addSublayer:instance]; 
[layer setNeedsDisplay]; //required 

или рисунок не будет.

Но когда я использую буит в CALayer подклассов (CATextLayer, CAShapeLayer и т.д.), вызов setNeedsDisplay: не требуется, после добавления их в супер-слой. Могу ли я заставить свой подкласс вести себя как эти классы?

ответ

1

Вы можете позвонить displayIfNeeded на себя в рамках метода init, однако лучше подкласс needsDisplayForKey: и вернуть YES для ключа @"transform", который будет перерисовывать, когда границы изменения (т.е. при первом добавлении к просмотру).

+0

Чем вы отвечаете. Я закончил с использованием needsDisplayForKey: и проверил для ключей «transform» и «bounds». Для меня вызов displayIfNeeded или проверка только клавиши «transform» не работает для некоторых случаев с краем. – Chris