আমি সুইফ্ট ব্যবহার করছি এবং আমি যখন কোনও ল্যান্ডস্কেপে ঘুরে দেখি তখন কোনও ইউআইভিউকন্ট্রোলার লোড করতে সক্ষম হতে চাই, কেউ কি আমাকে সঠিক দিকে নির্দেশ করতে পারে?
আমি অনলাইন এবং ডকুমেন্টেশন দ্বারা কিছুটা বিভ্রান্ত কিছুই খুঁজে পাচ্ছি না।
আমি সুইফ্ট ব্যবহার করছি এবং আমি যখন কোনও ল্যান্ডস্কেপে ঘুরে দেখি তখন কোনও ইউআইভিউকন্ট্রোলার লোড করতে সক্ষম হতে চাই, কেউ কি আমাকে সঠিক দিকে নির্দেশ করতে পারে?
আমি অনলাইন এবং ডকুমেন্টেশন দ্বারা কিছুটা বিভ্রান্ত কিছুই খুঁজে পাচ্ছি না।
উত্তর:
আমি কীভাবে এটি কাজ করেছিলাম তা এখানে:
ইন AppDelegate.swift
ভিতরে didFinishLaunchingWithOptions
ফাংশন আমি করা:
NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.rotated), name: UIDevice.orientationDidChangeNotification, object: nil)
এবং তারপরে অ্যাপডেলিগেট শ্রেণীর ভিতরে আমি নিম্নলিখিত ফাংশনটি রেখেছি:
func rotated() {
if UIDeviceOrientationIsLandscape(UIDevice.current.orientation) {
print("Landscape")
}
if UIDeviceOrientationIsPortrait(UIDevice.current.orientation) {
print("Portrait")
}
}
আশা করি এটি অন্য কাউকে সাহায্য করবে!
ধন্যবাদ!
selector
স্ট্রিং ফর্ম্যাটটি থাকা উচিত নয় "rotated:"
??
rotated()
না)
UIDeviceOrientation
আলাদা কিছু হ'ল সাবধানতা অবলম্বন করুন UIInterfaceOrientation
.. এটি কারণ হ'ল UIDeviceOrientation
মুখটি নীচু করে এবং মুখোমুখি অবস্থানগুলি সনাক্ত করে যার অর্থ আপনার কোডটি প্রতিকৃতি এবং ল্যান্ডস্কেপের মধ্যে এলোমেলোভাবে ঝাঁপিয়ে উঠতে পারে যদি আপনার ডিভাইসটি প্রায় সমতল তবে কিছুটা অসম পৃষ্ঠের উপরে বসে থাকে (অর্থাত্ প্রসারণে দোলনা) 6 / 6s এর ক্যামেরা)
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.current.orientation.isLandscape {
print("Landscape")
}
if UIDevice.current.orientation.isFlat {
print("Flat")
} else {
print("Portrait")
}
}
ক্যামেরাটি ব্যবহার করার সময় ঘূর্ণন শনাক্ত করতে হবে AVFoundation
এবং এটি আবিষ্কার করেছে যে didRotate
( এখন অবনমিত ) এবং willTransition
পদ্ধতিগুলি আমার প্রয়োজনের জন্য বিশ্বাসযোগ্য নয়। ডেভিড পোস্ট করা বিজ্ঞপ্তিটি ব্যবহার করে কাজ করেছে তবে এটি সুইফট 3.x / 4.x এর জন্য বর্তমান নয়।
সুইফট 4.2 বিজ্ঞপ্তির নাম পরিবর্তন করা হয়েছে।
সমাপনী মানটি সুইফট ৪.০-এর মতোই রয়েছে:
var didRotate: (Notification) -> Void = { notification in
switch UIDevice.current.orientation {
case .landscapeLeft, .landscapeRight:
print("landscape")
case .portrait, .portraitUpsideDown:
print("Portrait")
default:
print("other")
}
}
সুইফট ৪.২-এর জন্য বিজ্ঞপ্তি স্থাপন করতে :
NotificationCenter.default.addObserver(forName: UIDevice.orientationDidChangeNotification,
object: nil,
queue: .main,
using: didRotate)
সুইফট ৪.২-এর বিজ্ঞপ্তি ছিন্ন করতে :
NotificationCenter.default.removeObserver(self,
name: UIDevice.orientationDidChangeNotification,
object: nil)
অবচয় বিবৃতি সম্পর্কে , আমার প্রাথমিক মন্তব্যটি বিভ্রান্তিকর ছিল, তাই আমি এটি আপডেট করতে চেয়েছিলাম। যেমন উল্লেখ @objc
করা হয়েছে , অনুমানের ব্যবহার অবমূল্যায়ন করা হয়েছে, যার পরিবর্তে একটি ব্যবহারের প্রয়োজন ছিল #selector
। পরিবর্তে একটি বন্ধ ব্যবহার করে, এটি এড়ানো যেতে পারে এবং আপনার এখন একটি সমাধান রয়েছে যা একটি অবৈধ নির্বাচনকারীকে কল করার কারণে ক্রাশ এড়ানো উচিত।
সুইফট ৪.০
সহ সুইফট ৪.০, অ্যাপল আমাদের এটি ব্যবহার এড়াতে উত্সাহিত করেছে #selector
, সুতরাং এই পদ্ধতির এখন একটি পরিসমাপ্তি ব্লক ব্যবহার করা হয়েছে। এই পদ্ধতিরটি সুইফট 3.x এর সাথে পিছনের দিকেও সামঞ্জস্যপূর্ণ এবং এটিই এগিয়ে যাওয়ার প্রস্তাবিত পদ্ধতির হবে।
অনুমানের #selector
অবমূল্যায়নের কারণে আপনি যদি ফাংশনটি ব্যবহার করেন তবে এটি একটি সুইফট 4.x প্রকল্পে আপনি পাবেন সংকলক সতর্কতা @objc
:
এই পরিবর্তনের উপর দ্রুত-বিবর্তনে প্রবেশ করুন ।
কলব্যাক সেটআপ করুন:
// If you do not use the notification var in your callback,
// you can safely replace it with _
var didRotate: (Notification) -> Void = { notification in
switch UIDevice.current.orientation {
case .landscapeLeft, .landscapeRight:
print("landscape")
case .portrait, .portraitUpsideDown:
print("Portrait")
default:
print("other")
}
}
বিজ্ঞপ্তিটি সেটআপ করুন:
NotificationCenter.default.addObserver(forName: .UIDeviceOrientationDidChange,
object: nil,
queue: .main,
using: didRotate)
এটি ধ্বংস:
NotificationCenter.default.removeObserver(self, name: .UIDeviceOrientationDidChange, object: nil)
এর -orientation
সম্পত্তি ব্যবহার করা UIDevice
সঠিক নয় (এমনকি এটি বেশিরভাগ ক্ষেত্রে কাজ করতে পারে) এবং কিছু বাগ তৈরি করতে পারে, উদাহরণস্বরূপ UIDeviceOrientation
ডিভাইসটির মুখোমুখি বা নীচে থাকলে এটির অবস্থান সম্পর্কেও বিবেচনা করুন, তাদের জন্য UIInterfaceOrientation
এনামের মধ্যে সরাসরি জুড়ি নেই is মান।
তদুপরি, আপনি যদি কিছু নির্দিষ্ট অভিযোজনে আপনার অ্যাপ্লিকেশনটিকে লক করেন তবে ইউআইডিভাইস সেটিকে অ্যাকাউন্টে না নিয়েই আপনাকে ডিভাইস ওরিয়েন্টেশন দেবে।
অন্যদিকে iOS8 শ্রেণিতে interfaceOrientation
সম্পত্তি হ্রাস করেছে re
ইন্টারফেস অরিয়েন্টেশন সনাক্ত করতে 2 টি বিকল্প উপলব্ধ:UIViewController
যা এখনও অনুপস্থিত তা হ'ল ইন্টারফেস অভিমুখীকরণের পরিবর্তনের দিক বোঝার উপায়, যা অ্যানিমেশনগুলির সময় খুব গুরুত্বপূর্ণ।
ডাব্লুডাব্লুডিসি 2014 এর অধিবেশনে "আইওএস 8-তে নিয়ামক অগ্রগতি দেখুন" এর স্পিকার প্রতিস্থাপন পদ্ধতিটি ব্যবহার করে সেই সমস্যারও একটি সমাধান সরবরাহ করে -will/DidRotateToInterfaceOrientation
।
এখানে প্রস্তাবিত সমাধানটি আংশিকভাবে প্রয়োগ করা হয়েছে, আরও তথ্য এখানে :
func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
let orientation = orientationFromTransform(coordinator.targetTransform())
let oldOrientation = UIApplication.sharedApplication().statusBarOrientation
myWillRotateToInterfaceOrientation(orientation,duration: duration)
coordinator.animateAlongsideTransition({ (ctx) in
self.myWillAnimateRotationToInterfaceOrientation(orientation,
duration:duration)
}) { (ctx) in
self.myDidAnimateFromInterfaceOrientation(oldOrientation)
}
}
আমি জানি এই প্রশ্নটির জন্য Swift
, তবে যেহেতু এটি গুগল অনুসন্ধানের জন্য শীর্ষ লিঙ্কগুলির মধ্যে একটি এবং যদি আপনি একই কোডটি সন্ধান করছেন Objective-C
:
// add the observer
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rotated:) name:UIDeviceOrientationDidChangeNotification object:nil];
// remove the observer
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
// method signature
- (void)rotated:(NSNotification *)notification {
// do stuff here
}
সহজ, এটি আইওএস 8 এবং 9 / সুইফট 2 / এক্সকোড 7 এ কাজ করে, এই কোডটি কেবল আপনার ভিউকন্ট্রোলআর সুইফ্টের মধ্যে রাখুন। এটি প্রতিটি ওরিয়েন্টেশন পরিবর্তনের সাথে স্ক্রিনের মাত্রাগুলি মুদ্রণ করবে, আপনি তার পরিবর্তে আপনার নিজের কোড রাখতে পারেন:
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
getScreenSize()
}
var screenWidth:CGFloat=0
var screenHeight:CGFloat=0
func getScreenSize(){
screenWidth=UIScreen.mainScreen().bounds.width
screenHeight=UIScreen.mainScreen().bounds.height
print("SCREEN RESOLUTION: "+screenWidth.description+" x "+screenHeight.description)
}
didRotateFromInterfaceOrientation()
নির্ভরযোগ্যভাবে কাজ করে না। এটি কিছু আবর্তন মিস করে। iewWillTransitionToSize:withTransitionCoordinator:
ঠিক আছে কাজ করে।
নতুন ভিউউইলট্রান্সিশনটিসোসাইজটি ব্যবহার করুন (_: ট্রান্সশিশনকর্ডিনেটরের সাথে :)
আমি ওরিয়েন্টেশন বিজ্ঞপ্তিটি পরীক্ষা করতে পছন্দ করি কারণ আপনি যে কোনও ক্লাসে এই বৈশিষ্ট্যটি যুক্ত করতে পারেন, ভিউ বা ভিউ কন্ট্রোলার হওয়ার দরকার নেই। এমনকি আপনার অ্যাপের প্রতিনিধিতেও।
সুইফট 5:
//ask the system to start notifying when interface change
UIDevice.current.beginGeneratingDeviceOrientationNotifications()
//add the observer
NotificationCenter.default.addObserver(
self,
selector: #selector(orientationChanged(notification:)),
name: UIDevice.orientationDidChangeNotification,
object: nil)
বিজ্ঞপ্তিটি ক্যাশে করার চেয়ে
@objc func orientationChanged(notification : NSNotification) {
//your code there
}
উদ্দেশ্য সি
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
দ্রুত
func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
ওরিয়েন্টেশন পরিবর্তন সনাক্ত করতে এই পদ্ধতিটি ওভাররাইড করুন।
সুইফট 3 | ইউআইডিভাইস ওরিয়েন্টেশনডিড চেঞ্জ বিজ্ঞপ্তি খুব ঘন ঘন পর্যবেক্ষণ করা হয়
প্রতিকৃতি থেকে ল্যান্ডস্কেপ অভিমুখীকরণের পরিবর্তন নির্বিশেষে আপনার কোডটি 3 ডি স্পেসে ওরিয়েন্টেশন পরিবর্তন করার সময় নিম্নলিখিত কোডটি "ডিভাইসড্রিটেট" মুদ্রণ করে। উদাহরণস্বরূপ, আপনি যদি নিজের ফোনকে প্রতিকৃতি নির্দেশে ধরে রাখেন এবং এটিকে সামনের দিকে এবং পিছনে কাত করে থাকেন - ডিভাইসডিড্রোটেট () বারবার বলা হয়।
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(deviceDidRotate),
name: .UIDeviceOrientationDidChange,
object: nil
)
}
func deviceDidRotate() {
print("deviceDidRotate")
}
এটির চারপাশে কাজ করার জন্য আপনি পূর্ববর্তী ডিভাইস ওরিয়েন্টেশন ধরে রাখতে পারেন এবং ডিভাইসডিডোটেট () পরিবর্তন করার জন্য পরীক্ষা করতে পারেন।
var previousDeviceOrientation: UIDeviceOrientation = UIDevice.current.orientation
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(deviceDidRotate),
name: .UIDeviceOrientationDidChange,
object: nil
)
}
func deviceDidRotate() {
if UIDevice.current.orientation == previousDeviceOrientation { return }
previousDeviceOrientation = UIDevice.current.orientation
print("deviceDidRotate")
}
অথবা আপনি একটি পৃথক বিজ্ঞপ্তি ব্যবহার করতে পারেন যা কেবল তখনই ডাকা হয় যখন ডিভাইসটি ল্যান্ডস্কেপ থেকে প্রতিকৃতিতে পরিবর্তিত হয়। এই ক্ষেত্রে আপনি UIApplicationDidChangeStatusBarOrientation
বিজ্ঞপ্তিটি ব্যবহার করতে চান ।
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(deviceDidRotate),
name: .UIApplicationDidChangeStatusBarOrientation,
object: nil
)
}
func deviceDidRotate() {
print("deviceDidRotate")
}
সুইফট ৩.০ এ ওরিয়েন্টেশন পরিবর্তন কীভাবে সনাক্ত করা যায় তার সম্পূর্ণ কার্যকারিতা বাস্তবায়ন।
আমি ফোন ওরিয়েন্টেশন এই বাস্তবায়ন ব্যবহার করতে face up
এবং face down
আমার কাছে গুরুত্বপূর্ণ ছিল, এবং আমি শুধুমাত্র একবার আমি জানতাম স্থিতিবিন্যাস নির্দিষ্ট অবস্থানে ছিল পরিবর্তন করতে দৃশ্য চেয়েছিলেন।
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//1
NotificationCenter.default.addObserver(self, selector: #selector(deviceOrientationDidChange), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
}
deinit {
//3
NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
}
func deviceOrientationDidChange() {
//2
switch UIDevice.current.orientation {
case .faceDown:
print("Face down")
case .faceUp:
print("Face up")
case .unknown:
print("Unknown")
case .landscapeLeft:
print("Landscape left")
case .landscapeRight:
print("Landscape right")
case .portrait:
print("Portrait")
case .portraitUpsideDown:
print("Portrait upside down")
}
}
}
গুরুত্বপূর্ণ টুকরোগুলি হ'ল:
unknown
মাঝে মাঝে একটি ওরিয়েন্টেশন রয়েছে কিনা তা খেয়াল করে নিশ্চিত হন ।আশা করি কেউ এটিকে সহায়ক বলে মনে করেছেন।
override func didRotate(from fromInterfaceOrientation: UIInterfaceOrientation) {
//swift 3
getScreenSize()
}
func getScreenSize(){
let screenWidth = UIScreen.main.bounds.width
let screenHeight = UIScreen.main.bounds.height
print("SCREEN RESOLUTION: \(screenWidth.description) x \(screenHeight.description)")
}
ঘূর্ণনটি সম্পূর্ণ হওয়ার পরে যদি আপনি কিছু করতে চান তবে আপনি সম্পূর্ণরূপে UIViewControllerTransitionCoordinator
হ্যান্ডলারটি এটির মতো ব্যবহার করতে পারেন
public override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
// Hook in to the rotation animation completion handler
coordinator.animate(alongsideTransition: nil) { (_) in
// Updates to your UI...
self.tableView.reloadData()
}
}
আইওএস 8 যেহেতু এটি করার সঠিক উপায় এটি।
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`
})
}
এর সাথে ঘোরানো পরিবর্তন হয়েছে কিনা তা পরীক্ষা করুন: viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
সাথে coordinator.animateAlongsideTransition(nil) { (UIViewControllerTransitionCoordinatorContext)
রূপান্তরটি শেষ হয়েছে কিনা তা আপনি যাচাই করতে পারেন।
নীচে কোড দেখুন:
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
coordinator.animateAlongsideTransition(nil) { (UIViewControllerTransitionCoordinatorContext) in
// if you want to execute code after transition finished
print("Transition finished")
}
if size.height < size.width {
// Landscape
print("Landscape")
} else {
// Portrait
print("Portrait")
}
}
ডিভাইস অরিয়েন্টেশন সনাক্তকরণের জন্য এখানে একটি সহজ উপায়: ( সুইফট 3 )
override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval) {
handleViewRotaion(orientation: toInterfaceOrientation)
}
//MARK: - Rotation controls
func handleViewRotaion(orientation:UIInterfaceOrientation) -> Void {
switch orientation {
case .portrait :
print("portrait view")
break
case .portraitUpsideDown :
print("portraitUpsideDown view")
break
case .landscapeLeft :
print("landscapeLeft view")
break
case .landscapeRight :
print("landscapeRight view")
break
case .unknown :
break
}
}
willRotate
এখন হ্রাস করা হয়েছে, আরও ভাল ব্যবহার viewWillTransition
।
সুইফট 4:
override func viewWillAppear(_ animated: Bool) {
NotificationCenter.default.addObserver(self, selector: #selector(deviceRotated), name: UIDevice.orientationDidChangeNotification, object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(self, name: UIDevice.orientationDidChangeNotification, object: nil)
}
@objc func deviceRotated(){
if UIDevice.current.orientation.isLandscape {
//Code here
} else {
//Code here
}
}
বিভিন্ন দর্শনীয় নিয়ামকগুলি জুড়ে সনাক্ত করার প্রয়োজন হলে অনেক উত্তর সাহায্য করতে পারে না। এই এক কৌশল করে।
viewWillDisappear
যোগ addObserver
মধ্যে viewDidLoad
। আইওএস স্বয়ংক্রিয়ভাবে কন্ট্রোলার দেখতে সদস্যতা বাতিল করে।
UIDevice.current.orientation.isFlat
আমার পদ্ধতির উপরে বিপিডিট শোয়ের অনুরূপ , তবে আইওএস 9+ ফোকাসের সাথে। আমি ভিউটি ঘোরার সময় এফএসসিএলেন্ডারের স্কোপ পরিবর্তন করতে চেয়েছিলাম ।
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
coordinator.animateAlongsideTransition({ (context) in
if size.height < size.width {
self.calendar.setScope(.Week, animated: true)
self.calendar.appearance.cellShape = .Rectangle
}
else {
self.calendar.appearance.cellShape = .Circle
self.calendar.setScope(.Month, animated: true)
}
}, completion: nil)
}
এটি নীচে কাজ করেছে, তবে আমি এটি সম্পর্কে মেষশাবক অনুভব করেছি :)
coordinator.animateAlongsideTransition({ (context) in
if size.height < size.width {
self.calendar.scope = .Week
self.calendar.appearance.cellShape = .Rectangle
}
}) { (context) in
if size.height > size.width {
self.calendar.scope = .Month
self.calendar.appearance.cellShape = .Circle
}
}
আমি ঠিক যেমন ক্লাসে UIUserInterfaceSizeClass
পরিবর্তিত একটি ওরিয়েন্টেশন সনাক্ত করতে ব্যবহার UIViewController
করি:
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
let isiPadLandscapePortrait = newCollection.horizontalSizeClass == .regular && newCollection.verticalSizeClass == .regular
let isiPhonePlustLandscape = newCollection.horizontalSizeClass == .regular && newCollection.verticalSizeClass == .compact
let isiPhonePortrait = newCollection.horizontalSizeClass == .compact && newCollection.verticalSizeClass == .regular
let isiPhoneLandscape = newCollection.horizontalSizeClass == .compact && newCollection.verticalSizeClass == .compact
if isiPhonePortrait {
// do something...
}
}
সুইফট 3 এর জন্য
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.current.orientation.isLandscape {
//Landscape
}
else if UIDevice.current.orientation.isFlat {
//isFlat
}
else {
//Portrait
}
}
UIDevice.current.orientation.isFlat
সুইফট 5
ডিভাইস ওরিয়েন্টেশন পরিবর্তনের বিজ্ঞপ্তিগুলি পেতে সেটআপ ক্লাস:
class MyClass {
...
init (...) {
...
super.init(...)
// subscribe to device orientation change notifications
UIDevice.current.beginGeneratingDeviceOrientationNotifications()
NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name: UIDevice.orientationDidChangeNotification, object: nil)
...
}
...
}
হ্যান্ডলার কোড সেটআপ করুন:
@objc extension MyClass {
func orientationChanged(_ notification: NSNotification) {
let device = notification.object as! UIDevice
let deviceOrientation = device.orientation
switch deviceOrientation {
case .landscapeLeft: //do something for landscape left
case .landscapeRight: //do something for landscape right
case .portrait: //do something for portrait
case .portraitUpsideDown: //do something for portrait upside-down
case .faceDown: //do something for face down
case .faceUp: //do something for face up
case .unknown: //handle unknown
@unknown default: //handle unknown default
}
}
}
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(OrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
}
-(void)OrientationDidChange:(NSNotification*)notification {
UIDeviceOrientation Orientation=[[UIDevice currentDevice]orientation];
if(Orientation==UIDeviceOrientationLandscapeLeft || Orientation==UIDeviceOrientationLandscapeRight) {
NSLog(@"Landscape");
} else if(Orientation==UIDeviceOrientationPortrait) {
NSLog(@"Potrait Mode");
}
}
দ্রষ্টব্য: কেবলমাত্র এই কোডটি ইউআইভিউউকন্ট্রোলারটি চিহ্নিত করার জন্য ব্যবহার করুন যা কোন দিকে রয়েছে
override func viewDidLoad() {
NotificationCenter.default.addObserver(self, selector: #selector(MyController.rotated), name: UIDevice.orientationDidChangeNotification, object: nil)
//...
}
@objc
private func rotated() {
if UIDevice.current.orientation.isLandscape {
} else if UIDevice.current.orientation.isPortrait {
}
//or you can check orientation separately UIDevice.current.orientation
//portrait, portraitUpsideDown, landscapeLeft, landscapeRight...
}
আইওএস 13.1.2 এর সাহায্যে ডিভাইসটি ঘোরানো না হওয়া পর্যন্ত অরিয়েন্টেশন সর্বদা 0 ফিরে আসে যে কোনও ঘূর্ণনের ইভেন্ট হওয়ার আগে আসল ঘূর্ণন পেতে আমাকে ইউআইডিওয়াইস.কন্টেনার.বেগিনগ্রিনেটিং ডিভাইস ওরিয়েন্টেশননোটিকেশনগুলি () কল করতে হবে।