10

Tôi đang tạo một ứng dụng iOS cần thực hiện sắp xếp lại giao diện nhỏ khi xoay. Tôi đang cố gắng phát hiện điều này bằng cách triển khai - (void)orientationChanged:(NSNotification *)note, nhưng điều này cho tôi thông báo khi thiết bị quay mặt lên hoặc úp xuống.Phát hiện thay đổi xoay trong iOS

Tôi muốn có cách để được thông báo khi giao diện thay đổi hướng.

Trả lời

26

Có một số phương pháp mà bạn có thể làm điều đó, bạn có thể tìm thấy chúng trong UIViewController class reference:

– willRotateToInterfaceOrientation:duration: 
– willAnimateRotationToInterfaceOrientation:duration: 
– didRotateFromInterfaceOrientation: 

Bạn cũng có thể làm điều đó trong phương pháp viewWillLayoutSubviews, nhưng phải cẩn thận với nó, vì nó được gọi về màn hình xuất hiện quá, và bất cứ khi nào bạn thêm một subview.

Edit:

Giải pháp bây giờ bị phản, xem câu trả lời chấp nhận.

+9

Lưu ý rằng cả ba trong số đó không được chấp nhận trong iOS 8. Thay vào đó, chúng tôi khuyên bạn nên sử dụng biến thể chuyển sang kích thước. –

4

Swift 3:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 

} 
1

Vì iOS 8 đây là cách chính xác để thực hiện.

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    super.viewWillTransition(to: size, with: coordinator) 

    coordinator.animate(alongsideTransition: { context in 
     // This is called during the animation 
    }, completion: { context in 
     // This is called after the rotation is finished. Equal to deprecated `didRotate` 
    }) 
} 
Các vấn đề liên quan