5

のカスタムサブクラスを作成しましたUIImageView。1つのメソッドで、画像の読み込み中にアクティビティインジケーターを中央に追加します。次のコードを使用していますが、アクティビティモニターはの外側に配置されていUIImageViewます。の範囲内に正確に中央揃えするにはどうすればよいUIImageViewですか?

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

indicator.autoresizingMask =
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleBottomMargin |
UIViewAutoresizingFlexibleLeftMargin;

indicator.center = self.center;

[self addSubview:indicator];    
[indicator startAnimating];
4

3 に答える 3

15

centerプロパティは、スーパービューの座標空間でのビューの座標です。したがって、imageViewの座標空間でインジケーターの座標を設定する必要があります。正しい方法は次のとおりです。

indicator.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
于 2012-05-28T08:21:04.110 に答える
3
indicator.center = [self convertPoint:self.center fromView:[self superview]];

このため、ポイントを変換する必要があるだけです(UIViewクラスリファレンス):

@property(nonatomic)CGPointセンターディスカッション

中心は、そのスーパービューの座標系内で指定され 、ポイントで測定されます。

于 2012-05-28T08:26:18.023 に答える
2

indicator.center = imageView.center;

于 2012-05-28T08:17:05.420 に答える