Как остановить размер кадра становится 1024x768 на детской площадке Swift - PullRequest
0 голосов
/ 31 октября 2018

Рамка основного вида в UIViewController становится 1024x768.

Сначала проблема не очевидна, но позже, когда вы делаете макет, это становится проблематичным. Как я могу убедиться, что размер фрейма совпадает с размером, который я установил с помощью .preferredContentSize?

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {

    override open func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.white
        self.view.frame //When run playground shows 1024x768
    }
}
let viewController = MyViewController()
viewController.preferredContentSize = CGSize(width: 375, height: 667) // set to different size


PlaygroundPage.current.liveView = viewController

1 Ответ

0 голосов
/ 31 октября 2018

Автоматическое размещение не закончено в viewDidAppear().

Вы можете получить размер кадра в viewWillAppear и viewDidLayoutSubviews, оба из которых вызываются более одного раза - но последний вызов будет иметь правильный размер кадра.

Вы также можете получить его в viewDidAppear, но это может быть слишком поздно для ваших нужд.

Обычный подход - создать var, содержащий начальный размер, и затем запустить любой код, для которого требуется фактический размер кадра в viewDidLayoutSubviews , если текущий размер кадра отличается от сохраненного размера (и обновления сохраненного размера).

...