presentViewController[swift,Objective-C,ios13]

iOS13から画面遷移をするとポップアップしたようになりスワイプでもviewを消せるようになった。

私のアプリでA→B(問題があるView、スワイプ)→A→B(dissmissボタンを押す)この時に何故か落ちる。

Fatal Exception: NSInternalInconsistencyException Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.

メインスレッドにキューを入れればいいようだが入れても直らなかった。

iosにそんな時間をかけたくなかったのでスワイプをそもそもできなくした。(画面をフルにした。)

Appdelegate.m obj-c

FilterNewShowViewController *shopViewC = [[FilterNewShowViewController alloc] initWithNibName:@"FilterNewShowViewController" bundle:[NSBundle mainBundle]];

>>>>shopViewC.modalPresentationStyle =  UIModalPresentationFullScreen;  

>>>>shopViewC.modalInPopover = YES;  //スワイプで消えなくなる。

self.window.rootViewController = shopViewC;

[self.window makeKeyAndVisible];
Viewcontroller.m obj-c
FilterNewShowViewController *shopViewC = [[FilterNewShowViewController alloc] initWithNibName:@"FilterNewShowViewController" bundle:[NSBundle mainBundle]];
>>>>shopViewC.modalPresentationStyle = UIModalPresentationFullScreen; //表示形式の選択
>>>>shopViewC.modalInPopover = YES; //スワイプで消えなくなる。
[self presentViewController:shopViewC animated:YES completion:nil];
Viewcontroller.swift
let vc = UIViewController()
>>>>vc.modalPresentationStyle = .fullScreen;
>>>>vc.isModalInPresentation = true;
present(vc, animated: false, completion: nil)

NSDateから曜日を取得する[Objective-C,Swift]

Objective-C

NSDate *date = [NSDate date]; 
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSWeekdayCalendarUnit fromDate:date]; 
NSInteger weekday = [components weekday];

Swift

var date = NSDate()
var calender = NSCalendar.currentCalendar()
var components = calender.components(NSCalendarUnit.YearCalendarUnit|NSCalendarUnit.MonthCalendarUnit|NSCalendarUnit.DayCalendarUnit|NSCalendarUnit.WeekdayCalendarUnit, fromDate: date)
var weekday = components.weekday

weekdayは1=日曜日〜7=土曜日です。

日曜日月曜日火曜日水曜日木曜日金曜日土曜日
1234567

 

ReactNative [iOS,Android]

React Nativeとは

ReactはFacebookが開発したJavaScriptのフレームワークであり、React Nativeはそれをモバイルで使えiOSとAndroidのアプリを作ることができる。1つのコードで、両方のプラットフォームで動くものが作れる。(場合によって一部ネイティブの部分は必要になる可能性がある)

もっと見る

WKWebView[Swift]

func loadWebKit() {

let screenWidth:CGFloat = view.frame.size.width
let screenHeight:CGFloat = view.frame.size.height
// iPhone X , X以外は0となる
if #available(iOS 11.0, *) {
let window = UIApplication.shared.keyWindow
topPadding = window!.safeAreaInsets.top
}

//self.wkWebView.frame = CGRect(x: 0, y:topPadding, width:screenWidth, height:screenHeight*0.6)
self.wkWebView.frame = CGRect(x:-50, y:topPadding, width:screenWidth, height:screenHeight*0.6)

//wkWebView.frame = view.frame
wkWebView.navigationDelegate = self
wkWebView.uiDelegate = self

// スワイプでの「戻る・すすむ」を有効にする
wkWebView.allowsBackForwardNavigationGestures = true

//読み込むURL

let str: String = "https://taiwan-travel.net"
str = str.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!

if let url = URL(string: str) {

let request = URLRequest(url: url)
wkWebView.load(request)

}

view.addSubview(wkWebView)

//念のためにviewの更新をする
view.setNeedsLayout()

//隠すこともできます//表示はfalse
wkWebView.isHidden = true

}
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
print("遷移開始")

}

もっと見る