我正在尝试计算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解决方案特别好奇 - 我认为这是可能的,我只是做错了。什么是正确的道路?
答案 0 :(得分:3)
这是不可能的。 size
是CGRect
结构中的属性,而不是某些类的某些属性(height
的相同产量)。您无法使用KVC检索这些值,因为bounds
不是对象,只是结构。
答案 1 :(得分: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"];