It’s now or never

IT系の技術ブログです。気になったこと、勉強したことを備忘録的にまとめて行きます。

iOS

【SwiftUI】ピンチによるViewの拡大と縮小

概要 SwiftUIを使ってピンチイン・ピンチアウトによってView(画像に関わらずViewコンポーネント)を拡大・縮小する方法について記載します。 環境 Swift: 5.2.4 Xcode: 11.6 サンプル環境 struct ContentView: View { var body: some View { ZStack { Circle(…

【iOS】【Swift】Combineの基本的な使い方メモ

概要 iOS13から Combine というフレームワークが追加されました。 RxSwiftやRxJavaなどのRx系のライブラリを使わずとも純正のフレームワークでReactive Programingができるようになるというものです。 Rx系は、そこまで経験がないので、まずは基本的な使い方…

【SwiftUI】フェードアニメーションで画面遷移を行う

概要 SwiftUIで画面遷移をする方法の1つとして「表示フラグを使用して遷移をコントロールする」というものがあります。 詳しくは、以前書いた記事を読んでいただければ幸いです。 inon29.hateblo.jp この方法を使う場合は、画面遷移のアニメーションは自分…

【Swift 5.x】クラス/構造体のプロパティ名を取得する

環境 Swift: 5.2.2 Xcode: 11.4.1 プロパティ名を取得する for children in Mirror(reflecting: self).children { print(children) } Mirrorという構造体に参照したいオブジェクトや構造体を渡す 各プロパティは、children から参照できる サンプル class My…

【SwiftUI】@BindingとBinding<型>について

概要 SwiftUIでは、変数を参照型として扱うためのBindingという型があります。 Bindingを扱うためには、@Binding という PropertyWrapperを使うことが多いと思いますが、Binding型 というデータ型と@Bindingの扱いでたまに混乱してしまうことがあります。 そ…

【SwiftUI】SwiftUIでQRコードを表示する

概要 SwiftUIでQRコードを表示する必要があり、調べた内容になります。 UIKitと全く同じだと若干ハマりどころもあるため、備忘録として残しておきます。 環境 Swift: 5.2.2 Xcode: 11.4.1 QRCodeの画像を作成 import CoreImage import UIKit class QRCode { …

【SwiftUI】独自のViewModifierを定義する方法(ViewModifierプロトコル、View extension)

概要 SwiftUIを使ってアプリケーションを作成していると、Viewのコードが長くなり、Modifierの処理を共通化したいケースがでてくると思います。 そんな時にViewModifierを独自で定義して共通化するのも選択肢の1つです。 今回は、このような場合に独自でVie…

【SwiftUI】SwiftUIで使われるDSL構文について(@ViewBuilderとか@_functionBuilderとか)

概要 SwiftUIのViewの書き方には今までのSwiftにはなかった特徴があります。 次のような、クロージャにViewを連続で渡すようなDSL記法です。 今までのSwiftを書いたことがある人は、「なぜこんな書き方ができるんだろう?」と疑問に思われた人もいるかもしれ…

【SwiftUI】sheetやNavigationLinkで遷移するときに子Viewが再描画されてしまうのを防ぐ

はじめに この記事の内容は、実装方法に依存する話です。 実装によっては必要ない場合もありますのでその前提で読んでいただければと思います。 環境 XCode: 11.4 Swift: 5.2 概要 SwiftUIの画面描画は基本的には階層構造になっています。 struct FirstView:…

【SwiftUI】@Stateの基本的な使い方

概要 前回の記事では、propertyWrapperの基本について書きました。 inon29.hateblo.jp SwiftUIではこのpropertyWrapperの機能を使って様々な機能が提供されています。 今回は、値の更新を検知してViewを再描画させるためのpropertyWrapper @State についてみ…

【SwiftUI】SwiftUIにおける基本的な画面遷移について

概要 SwiftUIにおける基本的な画面遷移の方法についてまとめてみました。 SwiftUIはぱっと1画面を試すのは非常にシンプルで便利なのですが、個人的にはまだ画面遷移の方法に慣れない部分もあり、整理してみました。 環境 XCode 11.4 Swift 5.2 ① NavigationL…

【SwiftUI】SwiftUIでハマったところ(onAppaerが呼ばれるタイミング/environmentの伝播の範囲)

概要 最近はSwiftUIでアプリを書いているんですが、色々と戸惑うところが多かったので備忘録的にまとめておきます。 環境 Swift version 5.1 onAppearが呼ばれるタイミング 画面再描画時の挙動 SwiftUIには、Viewが初めて描画されるタイミングで呼ばれるコー…

【Swift】【SwiftUI】Property wrappers に入門してみた

概要 Swift 5.1から「Property Wrappers」という機能が導入されました。 これはプロパティの読み込み/書き込みをカプセル化するためのデータ構造です。 SwiftUIの導入により、Swiftには様々な機能が追加されましたが、このProperty Wrappersはその中でも特に…

【SwifUI】Sign In With Appleの機能をSwiftUIで実装する

概要 アップル独自の認証方法「Sign in with Apple」について、SwiftUIを使って実装してみます。 環境 XCode: Version 11.3.1 Swift: Version 5.1 Sign in with appleのボタンの作成 まず、はじめにボタンコンポーネントの作成から実装します。 Sign in with…

【ReactNative】React Nativeで開発を始めるにあたって

最近趣味でReactNativeを触っていましたが、タイミングよく業務でもReactNativeのアプリに関わることになりました。 趣味の範囲では、適当に触って入ればよかったのですが、流石に業務で使うとなると少し真面目に勉強しなくてはいけないなと思い始めています…

【iOS, swift】swiftコーディング規約

※ Swift 2.3をベースに記載 自分がswiftを書くときのコーディング規約を記載します。 クラス Pascal記法 (大文字で始まる) で記述する // ◯ class ViewController: UIViewController { } // ☓ snake case class view_controller: UIViewController { ・・・ …

【Swift 2.0】クラスのプロパティ名を取得する

swiftでクラスからプロパティ名のリストを取得する方法です。 static func propertyNames() -> Array<String> { var names: Array<String> = [] var count: UInt32 = 0 self.classForCoder() let properties:UnsafeMutablePointer<objc_property_t> = class_copyPropertyList(self.classForCod</objc_property_t></string></string>…

【cocos2d-x】【CocoStudio】CocoStudioを使って画面のレイアウトを読み込む

環境 cocos2d-x 3.2 CocoStudio for Mac 1.0.0 Bata CocoStudioでレイアウトを作成する まずは、CocoStudioにて任意の画面を作成します。 以下では、画面に一つボタンを置いています。 上記、赤枠の名前は、各UIパーツのをソースコード上から取得する時に必…

【iOS】画面遷移にUIKit Dynamicsのアニメーションを使ってみる

iOS7から使えるようになったカスタムの画面遷移UIViewControllerTransitioningDelegateと 同じくiOS7から使えるようになった物理エンジンのラッパーUIKit Dynamicsを 組み合わせて画面遷移アニメーションを作ってみたいと思います。 今回は、重力によって地…

UIViewControllerのカスタム画面遷移① (モーダル遷移)

iOS7から、UIViewControllerの画面遷移を自由にカスタムできるようになりました。 今回は、UIViewControllerモーダル遷移について記載します。 遷移元ViewControllerの実装 遷移元のViewControllerにて、 UIViewControllerTransitioningDelegateを継承します…

parseをObjective-Cで使用する ①

モバイルアプリ開発者にとってサーバサイドの実装がネックに感じている人は少なくないと思います。(私もその一人です。) そのような需要をもとにBaaS ( Backend as a Service)といったサービスが普及しているようです。 今回は、その中の一つ「Parse」の使い…

UIImageから生の画像データを取得/RGBデータからYUVデータへ変換

下記のようなソースで、画像ファイルからUIImageオブジェクトに読み込んだ画像の ビットマップデータを取得することができます。 CGImageRef newCgImage = [UIImage imageNamed:@"pingFile"].CGImage; CGDataProviderRef dataProvider = CGImageGetDataProvi…

【Objective-C】独自クラスのプロパティ名の一覧を取得する

独自で作成したクラスのプロパティは、 Objective-C Runtimeから取得することが可能です。 下記ヘッダをインポート #import "objc/runtime.h" プロパティのリストは、下記関数で取得する objc_property_t *class_copyPropertyList(Class cls, unsigned int *…