今天我在Xcode 12上遇到了問題。當我嘗試iOS 15版本的應用程式時,我注意到標簽欄的背景改變了。我通過添加這行代碼解決了這個問題
if (@available(iOS 15.0, *) {
[[UITabBar appearance] setScrollEdgeAppearance:tabBarAppearance.appearance】。]
}
但是在我從Xcode 13換回Xcode 12之后,我遇到了這個問題。
'UITabBar'沒有可見的@interface宣告選擇器'setScrollEdgeAppearance:'
。
對我來說似乎是Xcode12的錯誤,但也許我錯了。
編輯:添加了代碼中的if陳述句
。uj5u.com熱心網友回復:
我認為這是因為scrollEdgeAppearance只是UINavigationBar的一個屬性,用于iOS < 15版本。從iOS 15開始,他們已經將其擴展到所有其他的導航條
按照蘋果公司的檔案:
當在使用 iOS 14 或更早版本的應用程式上運行時,該屬性適用于 適用于具有大標題的導航欄。在 iOS 15 中,該屬性適用于 適用于所有導航欄。
uj5u.com熱心網友回復:
該屬性僅從iOS 13開始可用。以下是來自相應的API頭的宣告:
///描述了當關聯的UIScrollView到達與導航欄相鄰的邊緣(導航欄的頂部邊緣)時要使用的導航欄外觀屬性。如果沒有設定,將使用修改后的standardAppearance來代替。
@property (nonatomic, readwrite, copy, nullable) UINavigationBarAppearance *scrollEdgeAppearance UI_APPEARANCE_SELECTOR API_AVAILABLE(ios(13.0) 。)
你可以用條件編譯來使用它,就像
一樣if (@available(iOS 13.0, *)
{
[[UITabBar appearance] setScrollEdgeAppearance:tabBarAppearance.appearance】。]
}
但是你應該使用最新的SDK構建專案,將部署目標保持在你的最小支持系統上(大概是iOS 12)
更新:選擇器用法的動態變體
if(@available(iOS 13.0, *)
{
[[UITabBar appearance]]
performSelector:@selector(setScrollEdgeAppearance:)
withObject:tabBarAppearance.appearance】。]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307320.html
標籤:
