HTTPリクエストを実行するたびに、このコントロールをアクティビティインジケーターとして使用しています
https://github.com/gontovnik/DGActivityIndicatorView
これが私がそれを呼ぶ方法です
let activityIndicator: DGActivityIndicatorView = DGActivityIndicatorView();
activityIndicator.backgroundColor = UIColor.clearColor();
activityIndicator.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height);
activityIndicator.size = 68;
activityIndicator.tintColor = tintColor;
//activityIndicator.type = DGActivityIndicatorAnimationType.BallClipRotatePulse;
activityIndicator.startAnimating();
view.addSubview(activityIndicator);
私はこれをviewDidLoad
HTTPリクエストコードと一緒に呼び出します。
ただし、viewDidLoadでは自動レイアウトがまだレイアウトを完了していないため、これにより、activityIndicatorの位置が中央に配置されなくなります。
コードを配置することでこの問題を修正できviewDidAppear
、activityIndicatorが正しく配置されます。
しかし、HTTPリクエストはviewDidAppearでのみ行われるため、これは悪いことです。これは貴重な1秒を無駄にしています。
コントロールを変更して、それ自体が中央に配置されるようにするにはどうすればよいですか?
このコントロールは、DGActivityIndicatorViewに精通していないObj-Cでコーディングされています。
コントロール自体の中でそれを行う方法を見つけました
- (void)layoutSubviews {
[super layoutSubviews];
if (self.layer.sublayers != nil) {
self.frame = self.superview.frame;
self.layer.position = (CGPoint){CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)};
self.layer.sublayers[0].position = (CGPoint){CGRectGetMidX(self.layer.bounds), CGRectGetMidY(self.layer.bounds)};
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加