2019-08-01から1ヶ月間の記事一覧
概要 こういうインターフェースを作ったので記録。 こういうやつ タグ入力UI pic.twitter.com/6d7mriPEr2— Fumiya Ichikawa (@LET__IT__RIDE) August 22, 2019 実装 UILabelのタグ風の加工については省略。この記事を参考にすればいいと思う。 UILabelでタグ…
概要 例えば、TextViewの変更を検知して、Viewの色を変えるという独自拡張Viewがあったとする。 class UIChangeColorTextView: UITextView { override init(frame: CGRect) { delegate = self } required init?(coder aDecoder: NSCoder) { super.init(coder…
概要 TextFieldで時刻入力を求めるインターフェースのチェック処理。TextFieldプロパティとdelegateに以下の処理を記述した。 入力キーボードは数字のみ 5桁目の入力は切り捨てる。常に0〜4桁のみ表示 1桁目が3〜9の場合、"03"〜"09"のように頭に0を補完 2桁…
結論 UILabel.isUserInteractionEnabled = trueが必要 概要 例えばこんなタグ風UIで削除ボタンを設置したのだけど、ボタンが反応しない... private func makeAddressLabel(){ addressLabel.text = "サンフランシスコ Taylor St627付近" addressLabel.sizeToF…
プログラムからのインスタンス作成時とxib load時の2つのイニシャライザを定義しておくと両方のIFから利用できるオブジェクトとなる。 class MyUILabel: UILabel { //storyboardに配置したオブジェクトも動作するのだが、storyboard上の設定で上書きされるの…
簡単な方法 一番簡単な方法はテキストを中央寄せにして、Label自体のwidth, heightを伸ばすやり方。 label.text = "文字列" label.textAlignment = .center //書き出す文字列にサイズを合わす label.sizeToFit() //余白となるサイズを加える label.frame.siz…
CLGeocoderを使うと、緯度経度から簡単にReverse Geocodingすることができる。 Reverse Geocodingの実装 処理は非同期で行うので、完了後のコールバックメソッドに処理結果を引数としたクロージャーを利用すれば応用がきく。 import CoreLocation class MyLo…
MapView property User Locationにチェックを入れる。これにチェックを入れると現在地が取得が出来た時に自動で現在地に青丸のannotationが表示される。 info.plist 位置取得に対するPrivacyを定義する。 Privacy - Location When In Use Usage Description:…
Map上のピンはMKPointAnnotationというオブジェクトで管理・表現されている。 ピンを立てる シンプルなピンの場合、MKPointAnnotationをMapViewにaddAnnotationすることですぐに実装できる。 let mapView = MKMapView() let annotation = MKPointAnnotation(…
遷移元のViewControllerはpresentingViewControllerのオブジェクトに格納されている。 PrevViewControllerから遷移してきたとすると、以下のように記述するとアクセスできる。 let vc = self.presentingViewController as! PrevViewController vc.var1 = "va…
てっきりMKMapViewDelegateの中に実装メソッドがあると思ってたら違ってた... UILongPressGestureRecognizerで長押しイベントを検知する必要がある。 let mapView = MKMapView() override func viewDidLoad() { super.viewDidLoad() //長押し時のイベントを…
View.addGestureRecognizer()を使用する。addするGestureRecognizerはUIGestureRecognizerを継承したオブジェクトとなる。 GestureRecognizerの種類 UITapGestureRecognizer : タップ、ダブルタップ UIPinchGestureRecognizer : ピンチ UIPanGestureRecogniz…
イメージ 下記例でいうところのDoneボタンを表示する。 実装 ボタン部分の枠はUIToolbarで表示を行うと非常に楽。キーボードとUIToolbarのjoinはinputAccessoryViewで行える。 override func viewDidLoad() { super.viewDidLoad() // ツールバー生成 サイズ…
Firebase側の設定 ログイン方法 > Googleを有効にしておく。 プロジェクトの公開名は認証画面で表示されるアプリ名となる。 アプリの基本設定 podのインストール pod 'Firebase' pod 'Firebase/Auth' pod 'GoogleSignIn' $ pod install $ open FirebaseChat.…
EffectViewに直接addSubviewしようとすると以下のようなエラーが出る。 let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) visualEffectView.addSubview( UILabel() ) Do not add subviews directly to the visual effect vie…
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…
segueを使わずにstoryboard上のViewControllerにアクセスする。 アクセス対象のViewControllerのIdentifierを定義した上で、storyboard?.instantiateViewController()を使用してインスタンスを取得できる。 override func viewDidAppear(_ animated: Bool) {…
よくあるこの画面。UIActivityViewControllerを使用すると簡単に実装できる。 シェア画面の起動 UIActivityViewControllerのactivityItemsに各SNSに渡したいオブジェクトをセットすればよい。String、UIImage、URLなどがある。尚、Facebookはテキストのセッ…
info.plist 必要に応じて以下のパーミッションをinfo.plistに記述する。 Privacy - Photo Library Additions Usage Description フォトアルバムに画像を保存 Privacy - Photo Library Usage Description フォトアルバムにアクセス (不要っぽい?) Privacy - …
特定Viewのスクリーンショットを撮る。 UIGraphicsBeginImageContextWithOptionsにスクリーンショットを撮る座標と縦横幅を指定する。よって対象のViewのframeを指定すればよい。 UIGraphicsBeginImageContextWithOptions(view.frame.size, false, 0.0) view…
ブラウザを閉じたりリロードした後でも、登録、更新を行ったissueを再度表示できるようにする。 ストレージはローカル内で保存管理するものとし、サーバに送信したり取得したりといったことは行わない。 Vueでの処理 プロパティ issueList が追加、変更され…
こういったVueオブジェクトが定義されていた場合、arrayListに何らかの操作が行われた時に発火するメソッドを定義できる。 var app1 = new Vue({ el: '#app1', data: { arrayList: [] } }); watch メンバの定義 watchメンバの中に監視するプロパティとchange…
ブラウザは接続先のドメインごとにWebストレージ領域を割り当てられる。ストレージにはkey,valueの形式で保存可能。 ブラウザが変わればストレージ領域も変わる。 (そういったコードを書かない限り)サーバに送信しない。サーバから操作できない。がCookieと…
Vueオブジェクトは以下のライフサイクルがあり、各ポイントに応じて処理を実行することができる。 beforeCreate : Vueインスタンスが作成される直前 created : インスタンスの作成が完了 beforeMount : element(el: "id")にマウントされる直前 mounted : ele…
イメージ 状態は["new", "assigned", "closed"]の三種類とした。 Vue実装 プルダウンはloop生成 var app1 = new Vue({ el: '#app1', data: { statusList: ["new", "assigned", "closed"], ...略 issueオブジェクトにチケット状態を持つプロパティを追加 meth…
画面イメージ HTML v-showで表示される要素の中に削除ボタンを設置した。 削除ボタンのv-on:click.stopは.stopをつけることによってli要素のv-on:clickのメソッド呼び出しを抑制できる。これをつけないと親要素のv-on:clickも発火しておかしな挙動になる。 d…
入れ子になった要素で、親、子ともにv-on:clickなんかのイベントを持っている時、子の要素をクリックすると親の要素のイベントの発火する。 例えばこんなの。親divで何らかのイベント定義あり、divに入ったボタンがあるケース。divがアコーディオンになって…
line://msgというschemaにメッセージを追記してオプーンすればよい。特にSDK等を入れる必要もない。 テキストメッセージを送信する スキーマは/text 。その後ろに送信したい文字列を追記する。マルチバイトが入る場合、URLエンコードしておく。 let lineSche…
swift4.2?くらいからUIImageJPEGRepresentationメソッドはUIImage.jpegDataに差し替えないといけない。 'UIImageJPEGRepresentation' has been replaced by instance method 'UIImage.jpegData(compressionQuality:)' 差し替え例 //before UIImageJPEGRepres…
LINEの開発者登録 LINE連携するには開発者登録が必要。以下からLINEアカウントで簡単に登録できる。 LINE Developers ログインすると、まずはプロバイダーを登録してね。といわれるので、案内にしたがって登録する。 次に連携するアプリの登録を行う。登録し…