コードから直接セーフアリアにconstraintする
+読み込んだwebページのURLをprint
swift5
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let webView = WKWebView(frame: .zero)
webView.translatesAutoresizingMaskIntoConstraints = false
webView.navigationDelegate = self
view.addSubview(webView)
webView.leftAnchor.constraint(equalTo: view.safeLeftAnchor).isActive = true
webView.rightAnchor.constraint(equalTo: view.safeRightAnchor).isActive = true
webView.topAnchor.constraint(equalTo: view.safeTopAnchor, constant: 60).isActive = true
webView.bottomAnchor.constraint(equalTo: view.safeBottomAnchor, constant: 100).isActive = true
}
// 読み込んだwebページのURLをprint
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let activeUrl: URL? = self.webView.url
let url = activeUrl?.absoluteString
print(url)
}
}
extension UIView {
var safeTopAnchor: NSLayoutYAxisAnchor {
if #available(iOS 11.0, *) {
return self.safeAreaLayoutGuide.topAnchor
}
return self.topAnchor
}
var safeLeftAnchor: NSLayoutXAxisAnchor {
if #available(iOS 11.0, *){
return self.safeAreaLayoutGuide.leftAnchor
}
return self.leftAnchor
}
var safeRightAnchor: NSLayoutXAxisAnchor {
if #available(iOS 11.0, *){
return self.safeAreaLayoutGuide.rightAnchor
}
return self.rightAnchor
}
var safeBottomAnchor: NSLayoutYAxisAnchor {
if #available(iOS 11.0, *) {
return self.safeAreaLayoutGuide.bottomAnchor
}
return self.bottomAnchor
}
}
配列を値から検索して削除
削除したい値以外で新しい配列を作成
swift5
var array = ["a","b","c","d","e","f"]
array = array.filter { $0 != "d" }
print(array) //結果:["a", "b", "c", "e", "f"]
配列で値が重複してなかったら追加
swift5
var array = ["a","b","c","d","e","f"]
let target = "s"
if !array.contains(target) {
array.append(target) //重複してなかったら追加される
}
print(array) //["a", "b", "c", "d", "e", "f", "s"]
switch文の挙動
default: break or returnの違い
breakはswitch文からの離脱
returnは関数からの離脱
swift5
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textFieldA: UITextField!
@IBOutlet weak var textFieldB: UITextField!
@IBOutlet weak var textFieldC: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
func textFieldDidEndEditing(_ textField: UITextField) {
switch textField {
case textFieldA:
textFieldA.text = "AAA"
case textFieldB:
textFieldB.text = String(987)
default:
break // or return
}
print(textField.text!)
// textFieldA,textFieldBを編集した時は必ず実行されるがtextFieldCの時、breakなら実行される
// returnならtextFieldDidEndEditing()から抜けてしまうので実行されない
}
}