আমি কীভাবে স্থিতি বারের উচ্চতা প্রোগ্রামে সুইট-এ পেতে পারি?
অবজেক্টিভ-সিতে এটি এর মতো:
[UIApplication sharedApplication].statusBarFrame.size.height.
উত্তর:
সুইফট ২.x নিয়ে কোনও সমস্যা আছে :
UIApplication.sharedApplication().statusBarFrame.size.height
সুইফট 3 বা সুইফট 4 :
UIApplication.shared.statusBarFrame.height
UIKit
আমদানি হয়েছে তা নিশ্চিত করুন
import UIKit
আইওএস 13-এ, আপনি অবহেলিত সতর্কতা পাবেন "
আইওএস ১৩.০-তে 'স্ট্যাটাস বারফ্রেম' অবমূল্যায়ন করা হয়েছিল: এর পরিবর্তে উইন্ডো দৃশ্যের স্ট্যাটাস বারম্যানেজার বৈশিষ্ট্যটি ব্যবহার করুন।
এটি ঠিক করতে:
let height = view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
size
সুইফ্ট 3 এ বাদ দিতে পারেন : UIApplication.shared.statusBarFrame.height
যথেষ্ট।
view.window?
সাথে প্রতিস্থাপন করুনUIApplication.shared.keyWindow?
আপডেট উত্তর আইওএস 13+ এবং আরও পুরানো আইওএস সংস্করণগুলি সুইফ্ট 5 এর জন্য সমর্থন করছে
func getStatusBarHeight() -> CGFloat {
var statusBarHeight: CGFloat = 0
if #available(iOS 13.0, *) {
let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
statusBarHeight = window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
} else {
statusBarHeight = UIApplication.shared.statusBarFrame.height
}
return statusBarHeight
}
শুভ কোডিং!
এটি আমি ব্যবহার করি:
struct Screen {
static var width: CGFloat {
return UIScreen.main.bounds.width
}
static var height: CGFloat {
return UIScreen.main.bounds.height
}
static var statusBarHeight: CGFloat {
return UIApplication.shared.statusBarFrame.size.height
}
}
তারপরে আপনি এটি করতে পারেন:
Screen.statusBarHeight
এটি ঠিক উদ্দেশ্য-সি এর মতো:
var screenStatusBarHeight: CGFloat {
return UIApplication.sharedApplication().statusBarFrame.height
}
এটি এতে স্ট্যান্ডার্ড ভেরিয়েবল হিসাবে অন্তর্ভুক্ত রয়েছে:
ইব্রাহিমের কাছ থেকে উত্তর পুনরায়:
extension UIApplication {
static var statusBarHeight: CGFloat {
var statusBarHeight: CGFloat = 0
if #available(iOS 13.0, *) {
let window = shared.windows.filter { $0.isKeyWindow }.first
statusBarHeight = window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
} else {
statusBarHeight = shared.statusBarFrame.height
}
return statusBarHeight
}
}
আমার swiftUI প্রকল্পে, এটি কাজ করেছে।
import UIKit
import SwiftUI
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let contentView = ContentView()
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
if let statusBarHeight = window.windowScene?.statusBarManager?.statusBarFrame.height {
SceneDelegateDataGetter.shared.height = statusBarHeight
}
window.rootViewController = HostingController(rootView: contentView)
self.window = window
window.makeKeyAndVisible()
}
}
class SceneDelegateDataGetter {
static let shared = SceneDelegateDataGetter()
public fileprivate(set) var height: CGFloat = 0
}
ব্যবহার করার সময়,
SceneDelegateDataGetter.shared.height
UIApplication.shared.statusBarFrame.size.height