IT TIP

iOS : 기기가 회전 한 후 기능을 실행하는 방법 (Swift)

itqueen 2020. 12. 9. 22:02
반응형

iOS : 기기가 회전 한 후 기능을 실행하는 방법 (Swift)


Auto-Layout을 사용하지 않는 UIView가 하나 있고 일부 구성 요소는 기본보기에서 X 및 Y 좌표의 백분율을 기준으로 표시됩니다.

이전에는 didRotateFromInterfaceOrientation에서 위치를 업데이트하는 함수를 실행했지만 이제 iOS8에서는 더 이상 사용되지 않습니다.

viewWillTransitionToSize를 살펴 보았지만 이상한 결과가 나오고 viewDidtransitionToSize 함수가없는 것 같습니다.

장치 회전 후 기능을 실행하는 쉬운 방법 (Swift에서)이 있습니까?


viewWillTransitionToSize위임 메소드가 호출됩니다 UIViewControllerTransitionCoordinator부합하는 객체입니다. 프로토콜이 선언하는 메서드는 animateAlongsideTransition(_:animation, completion:). 이를 사용하여 전환이 완료된 후 코드를 실행할 수 있습니다.

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
    coordinator.animateAlongsideTransition(nil, completion: {
        _ in

        // Your code here
    })
}

위의 답변 https://stackoverflow.com/a/26944087/6583492 는 Acey와 Moonwalkr 덕분에 절대적으로 옳습니다. 그러나 신속한 3.0의 경우 다음과 같이 보입니다.

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    coordinator.animate(alongsideTransition: nil) { _ in
        // Your code here
    }
}

여기서 Objective C 버전을 요구하지는 않지만 :

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext>  _Nonnull context) {

    // change any properties on your views

} completion:^(id<UIViewControllerTransitionCoordinatorContext>  _Nonnull context) {
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    if( UIDeviceOrientationIsPortrait(orientation) ) {
        NSLog(@"portrait");
    } else {
        NSLog(@"landscape");
    }  
}];
}

참고 URL : https://stackoverflow.com/questions/26943808/ios-how-to-run-a-function-after-device-has-rotated-swift

반응형