Как я могу получить фрейм слоя для автоматического изменения размера на основе фрейма суперслоя или фрейма его вида? - PullRequest
9 голосов
/ 26 мая 2010

Я экспериментирую с использованием cagradientlayer для рисования градиентов в нашем приложении вместо того, чтобы иметь подкласс uiview для управления градиентами. Одна вещь, с которой я столкнулся, заключается в том, что когда размер представления, имеющего градиент в качестве подслоя его основного слоя, изменяется в соответствии с данными, которые я пытаюсь показать, уровень не изменяется вместе с ним. Я получаю градиентный слой с исходным размером кадра, в то время как кадр моего вида намного больше.

Есть ли способ автоматически изменить размер подслоя, чтобы он соответствовал фрейму суперслоя или фрейму вида суперслоя?

Ответы [ 2 ]

9 голосов
/ 26 мая 2010

Реализация layoutSubviews в подклассе вашего представления. Он вызывается при изменении размера кадра (или при вызове setNeedsLayout). Просто установите рамку слоя на границы вида:

-(void)layoutSubviews
{
    someSubview.frame = self.bounds;   // make the subview frame match its view
}
2 голосов
/ 17 октября 2012

Это будет работать еще лучше

-(void)viewWillLayoutSubviews
...