0

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 ソリューションに興味があります。それは可能だと思いますが、やり方が間違っているだけです。適切なパスは何ですか?

4

2 に答える 2

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"];
于 2010-09-18T19:59:28.027 に答える
3

それは不可能。sizeCGRect構造体のプロパティであり、一部のクラスの一部のプロパティではありません ( に対して同じ結果が得られますheight)。boundsはオブジェクトではなく単なる構造体であるため、KVC を使用してこれらの値を取得することはできません。

于 2010-09-18T18:37:11.047 に答える