Изменение размера родительского представления, если размер подпредставления изменяется - PullRequest
0 голосов
/ 27 сентября 2011

Я новичок в Какао и программирую кастом InspectorView. Родительское представление (InspectorView) содержит несколько подпредставлений (InspectorCategories).

Если я откажусь от категории (подпредставления), я должен изменить размер / перевернуть вид моих родителей? Я узнал, что это невозможно с помощью масок авторазмера - это правильно?

Я пробовал это с resizeSubviewsWithOldSize в представлении моих родителей, но это не вызывается при изменении размера подпредставления.

Как мне добиться этого поведения?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Есть две части, чтобы выполнить то, что я думаю, что вы хотите:

(a) В родительском представлении переопределите метод sizeThatFits: , чтобы он вычислял новый размер, соответствующий размеру измененного подпредставления.

(b) В подпредставлении переопределите метод setFrame: и после изменения размера кадра он вызывает [self.superview sizeToFit] для изменения размера суперпредставления, возможно, так:

-(void)setFrame:(CGRect)newFrame
{
    [super setFrame:newFrame];
    [self.superview sizeToFit];
}
0 голосов
/ 27 сентября 2011

Нет, это невозможно сделать с помощью масок авторазмера. Маска авторазмера определяет, как изменяется размер представления, когда его суперпредставление меняет границы.

Подвид должен сообщить своему суперпредставлению, какой ему нужен размер, например, через вызов делегата. Суперпредставление должно изменить размер самого себя и подпредставления.

...