2014-12-04 11 views
6

Próbuję tłumaczyć SKScene * scene = [GameScene sceneWithSize:skView.bounds.size]; do Swift ale pojawia się błądviewWillLayoutSubviews w Swift

'sceneWithSize' jest niedostępna: budowa wykorzystanie obiektu 'SKScene (rozmiar :)'.

Używam viewWillLayoutSubviews i wycinanie viewDidLoad() ponieważ nie daje prawidłowych wymiarów do wymiarów ekranu urządzenia mam wybrać. Właściwie to mnie pytam, dlaczego w ogóle istnieje viewDidLoad()?

+0

Może po prostu 'let scene = SKScene (size: skView.bounds.size)' – Ian

Odpowiedz

0

Jak informuje błąd, funkcja, z której próbujesz korzystać, jest niedostępna. Należy zamiast użyć konstruktora init(size size: CGSize):

let scene = SKScene(size: skView.bounds.size) 

Należy również zauważyć, że nie jest konieczne :SKScene jako typ jest oczywiste od konstruktora.

Jeśli otworzysz documentation, zobaczysz, że +sceneWithSize: nie jest dostępne dla Swift.

+0

Skomentowałem wszystkie linie w viewDidLoad, z wyjątkiem super.viewDidLoad() i wstawiłem viewWillLayoutSubviews() z twoimi sugestiami, ale teraz nic nie widzę w symulatorze. W Objective C zawsze określałem GameScene sceneWithSize, ale zakładam, że kompilator nie wie, ponieważ powiedziałem, że scena = SKScene (size: skView.bounds.size) i nie ma wskazania GameScene. Tylko założenie. Jakieś pomysły, jak mogę to naprawić? – baskInEminence

4

Spróbuj zmienić

let scene:SKScene = GameScene.sceneWithSize(skView.bounds.size); 

przez

let scene:SKScene = GameScene(size: skView.bounds.size); 

nadzieję, że pomoże;)

0

Kiedy granice zmiana rzutem za, widok dostosowuje pozycję jego subviews. Twój kontroler widoku może zastąpić tę metodę, aby wprowadzić zmiany, zanim widok wyświetli pod-widoki. Domyślna implementacja tej metody nic nie robi.