2010-09-18 66 views
0

我试图计算一个UIScrollView子视图的总高度:求和UIView子视图属性的KVC路径是什么?

[self.subviews valueForKeyPath:@"[email protected]"]; 

但是,这将引发以下:

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

我试着放置@sum运营商在不同的地方路径,都具有相同的结果。

当然,我可以用循环做到这一点,但我特别好奇KVC解决方案 - 我认为这是可能的,我只是做错了。什么是正确的道路?

回答

3

这是不可能的。 sizeCGRect结构中的一个属性,而不是某些类的某些属性(对于height的收益率相同)。您无法使用KVC检索这些值,因为bounds不是对象,只是一个结构。

+0

这也解释了它。谢谢! – 2010-09-18 19:52:58

3

你可以做到这一点,但不是直接(见@ 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

聪明的做法,但不是我选择的方法。添加一个方法只是为了能够使用KVC进行简单求和,对我来说没有任何意义。虽然可能的整洁例证。 – Joost 2010-09-18 20:18:42

相关问题