テック-swift

Swift リバースジオコーディングを利用する

CLGeocoderを使うと、緯度経度から簡単にReverse Geocodingすることができる。 Reverse Geocodingの実装 処理は非同期で行うので、完了後のコールバックメソッドに処理結果を引数としたクロージャーを利用すれば応用がきく。 import CoreLocation class MyLo…

Swift MapViewに現在地点を配置する

MapView property User Locationにチェックを入れる。これにチェックを入れると現在地が取得が出来た時に自動で現在地に青丸のannotationが表示される。 info.plist 位置取得に対するPrivacyを定義する。 Privacy - Location When In Use Usage Description:…

Swift MapViewにピンを立てる

Map上のピンはMKPointAnnotationというオブジェクトで管理・表現されている。 ピンを立てる シンプルなピンの場合、MKPointAnnotationをMapViewにaddAnnotationすることですぐに実装できる。 let mapView = MKMapView() let annotation = MKPointAnnotation(…

Swift dismiss時に値を渡してViewControllerを閉じる

遷移元のViewControllerはpresentingViewControllerのオブジェクトに格納されている。 PrevViewControllerから遷移してきたとすると、以下のように記述するとアクセスできる。 let vc = self.presentingViewController as! PrevViewController vc.var1 = "va…

Swift MapViewで長押しした場所のlocationを取得する

てっきりMKMapViewDelegateの中に実装メソッドがあると思ってたら違ってた... UILongPressGestureRecognizerで長押しイベントを検知する必要がある。 let mapView = MKMapView() override func viewDidLoad() { super.viewDidLoad() //長押し時のイベントを…

Swift Viewにジェスチャーリスナーを定義する

View.addGestureRecognizer()を使用する。addするGestureRecognizerはUIGestureRecognizerを継承したオブジェクトとなる。 GestureRecognizerの種類 UITapGestureRecognizer : タップ、ダブルタップ UIPinchGestureRecognizer : ピンチ UIPanGestureRecogniz…

Swift TextView編集時のキーボードに入力完了ボタンを表示する

イメージ 下記例でいうところのDoneボタンを表示する。 実装 ボタン部分の枠はUIToolbarで表示を行うと非常に楽。キーボードとUIToolbarのjoinはinputAccessoryViewで行える。 override func viewDidLoad() { super.viewDidLoad() // ツールバー生成 サイズ…

Swift Firebase Google Authenticationを導入

Firebase側の設定 ログイン方法 > Googleを有効にしておく。 プロジェクトの公開名は認証画面で表示されるアプリ名となる。 アプリの基本設定 podのインストール pod 'Firebase' pod 'Firebase/Auth' pod 'GoogleSignIn' $ pod install $ open FirebaseChat.…

Swift UIVisualEffectViewにViewを追加する

EffectViewに直接addSubviewしようとすると以下のようなエラーが出る。 let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) visualEffectView.addSubview( UILabel() ) Do not add subviews directly to the visual effect vie…

Swift UIImageデータをbase64エンコードする

UIImageデータをbase64エンコードする エンコード let imageData = image.pngData()! as NSData // for jpg //let imageData = image.jpegData(compressionQuality: 0.8)! as NSData let base64String = imageData.base64EncodedString(options: .lineLength…

Swift segueを使わずにstoryboard上のViewControllerにアクセスする

segueを使わずにstoryboard上のViewControllerにアクセスする。 アクセス対象のViewControllerのIdentifierを定義した上で、storyboard?.instantiateViewController()を使用してインスタンスを取得できる。 override func viewDidAppear(_ animated: Bool) {…

Swift UIActivityViewControllerで簡単にSNSシェアを実装

よくあるこの画面。UIActivityViewControllerを使用すると簡単に実装できる。 シェア画面の起動 UIActivityViewControllerのactivityItemsに各SNSに渡したいオブジェクトをセットすればよい。String、UIImage、URLなどがある。尚、Facebookはテキストのセッ…

Swift UIImagePickerControllerでフォトアルバム、カメラアクセスを行う

info.plist 必要に応じて以下のパーミッションをinfo.plistに記述する。 Privacy - Photo Library Additions Usage Description フォトアルバムに画像を保存 Privacy - Photo Library Usage Description フォトアルバムにアクセス (不要っぽい?) Privacy - …

Swift 特定viewのスクリーンショットをとる

特定Viewのスクリーンショットを撮る。 UIGraphicsBeginImageContextWithOptionsにスクリーンショットを撮る座標と縦横幅を指定する。よって対象のViewのframeを指定すればよい。 UIGraphicsBeginImageContextWithOptions(view.frame.size, false, 0.0) view…

Swift LINEアプリにメッセージを送信する

line://msgというschemaにメッセージを追記してオプーンすればよい。特にSDK等を入れる必要もない。 テキストメッセージを送信する スキーマは/text 。その後ろに送信したい文字列を追記する。マルチバイトが入る場合、URLエンコードしておく。 let lineSche…

'UIImageJPEGRepresentation' has been replaced by instance method 'UIImage.jpegData(compressionQuality:)'

swift4.2?くらいからUIImageJPEGRepresentationメソッドはUIImage.jpegDataに差し替えないといけない。 'UIImageJPEGRepresentation' has been replaced by instance method 'UIImage.jpegData(compressionQuality:)' 差し替え例 //before UIImageJPEGRepres…

Swift LINEログイン連携

LINEの開発者登録 LINE連携するには開発者登録が必要。以下からLINEアカウントで簡単に登録できる。 LINE Developers ログインすると、まずはプロバイダーを登録してね。といわれるので、案内にしたがって登録する。 次に連携するアプリの登録を行う。登録し…

Swift xibのViewイベントをViewControllerに定義する

xibと対となるViewはレイアウトのみの定義で、イベント着火による振る舞いはViewControllerに書きたいことがある。 HogeView.xibとUIViewを継承したHogeView.swiftというファイルが定義されていたとすると、 HogeView.swift class HogeView: UIView { @IBOut…

Xcode Couldn’t communicate with a helper application.

XcodeからGit操作しようとしたら、 Couldn’t communicate with a helper application. Try your operation again. If that fails, quit and relaunch the application and try again. と表示されて、git initやcommitが出来ない場合がある。 Xcodeアップデー…

storyboard Modal遷移の実装

storyboard + swiftでmodal遷移の実装 遷移先、遷移元となるViewControllerを定義 storyboard上に遷移元、遷移先となる2つのViewControllerを配置。また、ViewControllerクラスの作成を行う。 ViewControllerクラスは 遷移元:OpeningViewController 遷移先…