0

PFLoginViewController (ParseUI フレームワークから) を使用して iOS 9 で問題が発生した人はいますか?

iOS 8 では、Parse のドキュメントに従って、カスタム フィールドを viewDidLayoutSubviews の LoginViewController に設定しましたが、iOS 9 では無限ループに入り、viewDidLayoutSubviews メソッドを終了しません。

(void)viewDidLayoutSubviews {
    NSLog(@"didLayoutSubviews");
    [super viewDidLayoutSubviews];

    float width = self.view.frame.size.width;
    float height = self.view.frame.size.height;
    ......
    [self.logInView addSubview:backgroundImage]; // <- the line here causes an infinite loop

}

更新:犯人に絞り込みました: addSubview は、無限ループを引き起こしている行です。しかし、繰り返しますが、それはiOS9でのみ発生します...スルーツ?

更新 2:すべての ParseUI ユーザーへの回答 (以下の回答者の考えに感謝します) は、iOS 8 ではその Parse で動作しましたが、以前に文書化されていたように、viewDidLayoutSubviews の PFLoginViewController に背景画像を追加することはできなくなりました。 . また、viewDidLoad で PFLoginViewController.loginView に背景を追加しても機能しません。

解決策:サブビューの追加を viewDidLoad メソッドに移動し、サブビューを PFLoginViewController.loginView に追加しないでください。代わりに、サブビューを PFLoginViewController.view に直接追加します

4

1 に答える 1

2

ビューの subviews 配列が変更されるたびに、レイアウトが必要であるというフラグが立てられます。レイアウトが完了した直後にサブビューを追加しているため、別のレイアウト パスをトリガーしています。とにかく、すべてのレイアウトパスにサブビューを追加したいのはなぜですか?

にサブビューを追加しないでくださいviewDidLayoutSubviews。に追加しviewDidLoad、制約または自動サイズ変更のいずれかを使用して、サブビューのフレームがレイア​​ウト パスによって正しく設定されるようにする必要があります。

于 2015-11-01T06:24:17.863 に答える