欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS 13適配匯總(推薦)

 更新時間:2019年09月19日 10:13:56   作者:仰望星空01  
這篇文章主要介紹了iOS 13適配匯總,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

隨著iPhone 11的發(fā)布,iOS 13適配也提上了日程,接下來就開發(fā)中升級iOS13的手機可能出現(xiàn)的問題

Xcode: 11.0
iOS : 13.0

UIViewController 模態(tài)彈出界面

viewController.present(presentVC, animated: true, completion: nil)

在調(diào)用模態(tài)彈出視圖,會發(fā)現(xiàn)彈出的界面沒有全屏。如圖

模態(tài)彈出界面

通過多次的嘗試,發(fā)現(xiàn)在低版本里面不會發(fā)生這種情況(iOS12及以下),于是我查閱了最新的開發(fā)文檔,發(fā)現(xiàn)了端倪,主要還是因為我們之前忽略了UIViewController里面的一個屬性,即:modalPresentationStyle

Defines the presentation style that will be used for this view controller when it is presented modally. Set this property on the view controller to be presented, not the presenter.
 If this property has been set to UIModalPresentationAutomatic, reading it will always return a concrete presentation style. By default UIViewController resolves UIModalPresentationAutomatic to UIModalPresentationPageSheet, but other system-provided view controllers may resolve UIModalPresentationAutomatic to other concrete presentation styles.
 Defaults to UIModalPresentationAutomatic on iOS starting in iOS 13.0, and UIModalPresentationFullScreen on previous versions. Defaults to UIModalPresentationFullScreen on all other platforms.


public enum UIModalPresentationStyle : Int {
  case fullScreen
  
  @available(iOS 3.2, *)
  case pageSheet
  @available(iOS 3.2, *)
  case formSheet

  @available(iOS 3.2, *)
  case currentContext

  @available(iOS 7.0, *)
  case custom

  @available(iOS 8.0, *)
  case overFullScreen

  @available(iOS 8.0, *)
  case overCurrentContext

  @available(iOS 8.0, *)
  case popover

  
  @available(iOS 7.0, *)
  case none

  @available(iOS 13.0, *)
  case automatic
}

通過查看API 可以看到,iOS 13 新增一個:automatic類型,默認情況下就是這個所以才會彈出不是全屏的界面。如果我們想要修改為全屏的話

可以:presentVC.modalPresentationStyle = .fullScreen設(shè)置為全屏即可

KVC 限制

iOS13以后已經(jīng)不能肆無忌憚的通過 KVC來修改一些沒有暴露出來的屬性了。

*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Access to xxx's _xxx ivar is prohibited. This is an application bug'

我們常用的有

// UITextField 的 _placeholderLabel
    let textField = UITextField.init()
    textField.setValue(UIColor.red, forKey: "_placeholderLabel.textColor")
    
    /// UISearchBar 的 _searchField
    [searchBar valueForKey:@"_searchField"]

下面方法替換

///分別設(shè)置字體大小和顏色(富文本)
textField.attributedPlaceholder = NSAttributedString.init(string: "請輸入....", attributes: [NSAttributedString.Key.foregroundColor: UIColor.red], [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 15)])

 /// UISearchBar 用 searchField代替
bar.value(forKey: "searchField") as! UITextField

UISegmentedControl 默認樣式改變

默認樣式變?yōu)榘椎缀谧?,如果設(shè)置修改過顏色的話,頁面需要修改

UITabbar

如果之前有通過TabBar上圖片位置來設(shè)置紅點位置,在iOS13上會發(fā)現(xiàn)顯示位置都在最左邊去了。遍歷UITabBarButton的subViews發(fā)現(xiàn)只有在TabBar選中狀態(tài)下才能取到UITabBarSwappableImageView,解決辦法是修改為通過UITabBarButton的位置來設(shè)置紅點的frame

App啟動過程中,部分View可能無法實時獲取到frame

// 只有等執(zhí)行完 UIViewController 的 viewDidAppear 方法以后,才能獲取到正確的值,在viewDidLoad等地方 frame Size 為 0,例如:
 UIApplication.shared.statusBarFrame

廢棄UIWebView

查看API可以看到:iOS 2.0 到 iOS 11.0
在12.0就已經(jīng)被廢棄,部分APP使用webview時, 審核被拒

@available(iOS, introduced: 2.0, deprecated: 12.0, message: "No longer supported; please adopt WKWebView.")
open class UIWebView : UIView, NSCoding, UIScrollViewDelegate {
	.........
	.........
	.........
}

CNCopyCurrentNetworkInfo

iOS13 以后只有開啟了 Access WiFi Information capability,才能獲取到 SSID 和 BSSID wi-fi or wlan 相關(guān)使用變更
最近收到了蘋果的郵件,說獲取WiFi SSID的接口CNCopyCurrentNetworkInfo 不再返回SSID的值。不仔細看還真會被嚇一跳,對物聯(lián)網(wǎng)的相關(guān)APP簡直是炸彈。仔細看郵件還好說明了可以先獲取用戶位置權(quán)限才能返回SSID。
注意:目本身已經(jīng)打開位置權(quán)限,則可以直接獲取

- (NSString*) getWifiSsid {
  if (@available(iOS 13.0, *)) {
    //用戶明確拒絕,可以彈窗提示用戶到設(shè)置中手動打開權(quán)限
    if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
      NSLog(@"User has explicitly denied authorization for this application, or location services are disabled in Settings.");
      //使用下面接口可以打開當前應(yīng)用的設(shè)置頁面
      //[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
      return nil;
    }
    CLLocationManager* cllocation = [[CLLocationManager alloc] init];
    if(![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined){
      //彈框提示用戶是否開啟位置權(quán)限
      [cllocation requestWhenInUseAuthorization];
      usleep(50);
      //遞歸等待用戶選選擇
      return [self getWifiSsidWithCallback:callback];
    }
  }
  NSString *wifiName = nil;
  CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();
  if (!wifiInterfaces) {
    return nil;
  }
  NSArray *interfaces = (__bridge NSArray *)wifiInterfaces;
  for (NSString *interfaceName in interfaces) {
    CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));

    if (dictRef) {
      NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef;
      NSLog(@"network info -> %@", networkInfo);
      wifiName = [networkInfo objectForKey:(__bridge NSString *)kCNNetworkInfoKeySSID];
      CFRelease(dictRef);
    }
  }
  CFRelease(wifiInterfaces);
  return wifiName;
}

同意打?。喝缦?/p>

 network info -> {
BSSID = "44:dd:fb:43:91:ff";
SSID = "Asus_c039";
SSIDDATA = <41737573 5f633033 39>;
}
不同意
network info -> {
BSSID = "00:00:00:00:00:00";
SSID = WLAN;
SSIDDATA = <574c414e>;
}

持續(xù)更新中…

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • 利用iOS動畫來模擬音量振動條的實現(xiàn)

    利用iOS動畫來模擬音量振動條的實現(xiàn)

    本篇文章主要利用iOS動畫來模擬音量振動條的實現(xiàn)以及對CAReplicatorLayer的簡單介紹,需要的朋友可以參考下
    2015-07-07
  • 詳解iOS的深淺拷貝

    詳解iOS的深淺拷貝

    本文詳細介紹了IOS中的三種拷貝方式,對iOS的深淺拷貝有疑問的朋友們可以參考下本文。
    2016-08-08
  • iOS AFNetworking各種功能封裝類代碼

    iOS AFNetworking各種功能封裝類代碼

    下面小編就為大家分享一篇iOS AFNetworking各種功能封裝類代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS中輸入框設(shè)置指定字符輸入的方法

    iOS中輸入框設(shè)置指定字符輸入的方法

    這篇文章主要給大家介紹了關(guān)于iOS中輸入框如何設(shè)置指定字符輸入的相關(guān)資料,其中介紹了關(guān)于只能輸入純數(shù)字、只能輸入純大小寫字母以及大小寫字母和數(shù)字結(jié)合輸入等指定字符的限制,需要的朋友可以參考借鑒,下面來一起看看吧。
    2018-01-01
  • IOS 仿時光網(wǎng)選票UI實例代碼

    IOS 仿時光網(wǎng)選票UI實例代碼

    這篇文章主要介紹了IOS 仿時光網(wǎng)選票UI實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • iOS中多線程的經(jīng)典崩潰總結(jié)大全

    iOS中多線程的經(jīng)典崩潰總結(jié)大全

    這篇文章主要給大家介紹了關(guān)于iOS中多線程的一些經(jīng)典崩潰的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Navigation bar的注意事項詳解

    Navigation bar的注意事項詳解

    本文主要介紹了Navigation bar的注意事項。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • iOS開發(fā)避免安全隱患的要點總結(jié)

    iOS開發(fā)避免安全隱患的要點總結(jié)

    在本篇文章里小編給各位整理了關(guān)于iOS開發(fā)如何避免安全隱患的知識點總結(jié),需要的朋友們學(xué)習(xí)下。
    2019-07-07
  • 詳解iOS應(yīng)用UI開發(fā)中的九宮格坐標計算與字典轉(zhuǎn)換模型

    詳解iOS應(yīng)用UI開發(fā)中的九宮格坐標計算與字典轉(zhuǎn)換模型

    這篇文章主要介紹了iOS應(yīng)用UI開發(fā)中的九宮格坐標計算與字典轉(zhuǎn)換模型,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-01-01
  • iOS模糊效果的實現(xiàn)方法

    iOS模糊效果的實現(xiàn)方法

    這篇文章主要為大家詳細介紹了iOS模糊效果的實現(xiàn)方法,利用系統(tǒng)的CoreImage濾鏡、UIImage ImageEffects分類和UIVisualEffectView實現(xiàn)模糊效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論