Каков путь KVC для суммирования свойств подпредставления UIView? - PullRequest
0 голосов
/ 18 сентября 2010

Я пытаюсь вычислить общую высоту подпредставлений в UIScrollView:

[self.subviews valueForKeyPath:@"bounds.size.@sum.height"];

Но это выдает следующее:

'NSUnknownKeyException', reason: '[<NSConcreteValue 0x4b10170> valueForUndefinedKey:]: this class is not key value coding-compliant for the key size.'

Я пытался разместить @sum оператор в разных местах на этом пути, все с одинаковым результатом.

Конечно, я мог бы просто сделать это с помощью цикла, но мне особенно любопытно решение KVC - я предполагаю, что это возможно, и яЯ просто делаю это неправильно.Какой правильный путь?

Ответы [ 2 ]

3 голосов
/ 18 сентября 2010

Вы можете сделать это, но не напрямую (см. Ответ @ JoostK, почему).Вот как я бы это сделал:

Создайте категорию UIView, которая добавляет метод, например:

@interface UIView (KVCAdditions)

- (CGFloat) boundsHeight;

@end

@implementation UIView (KVCAdditions)

- (CGFloat) boundsHeight {
  return [self bounds].size.height;
}

@end

Теперь вы должны быть в состоянии сделать это:

NSNumber * totalHeight = [[self subviews] valueForKeyPath:@"@sum.boundsHeight"];
3 голосов
/ 18 сентября 2010

Это невозможно. size - это свойство в структуре CGRect, а не какое-то свойство некоторого класса (то же самое для height). Вы не можете получить эти значения с помощью KVC, так как bounds - это не объект, а просто структура.

...