LoginSignup
0
1

More than 3 years have passed since last update.

swift5メモ

Last updated at Posted at 2020-06-25

コードから直接セーフアリアに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()から抜けてしまうので実行されない
    }

}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1