しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

2024-01-01から1年間の記事一覧

SwiftUIのForEachについて整理

SwiftUIのForEachなんですがあまり分からずに使っているので調べてみました ForEachですが下のように繰り返しのViewを表示する際に利用します struct ContentView: View { var body: some View { ForEach(1..<6) { i in Text("Item \(i)") }.padding() } } F…

Kotlinのrememberについて調査する

KotlinのJetpack compose試した時にrememberというキーワード出てきたので調べてみました 調べた所、Jetpack composeを保持する時に使うキーワードのようです 今回は手元の環境でrememberを動かして動作を確認してみました まずはプロジェクトを作ってMainAc…

Kotlinでウィジェットのボタンを押したらActivityを起動する

ウィジェットのボタンを押したら特定のActivityを開くような実装をしてみたいと思います まずは新規プロジェクトを作成します 次はウィジェットを追加します 追加後はnew_app_widget.xmlで下のようにボタンを配置します

Xcode 16から登場したSwift AssistとGitHub Copilotの比較

Xcode 16からAIがコード補完をできる機能が登場しました XcodeではGitHub Copilotも使えるので簡単に補完の性能の比較をしてみました GitHub Copilot単独で試した記事は下のものです llcc.hatenablog.com 比較のため、GitHub CopilotをOFFにします 設定アプ…

SwiftUIの@Environmentについて調べる

SwiftUIでダークモード判定する時などに使う@Environmentについて調べてみました 調査では下記事を参考にしました qiita.com @Environmentの使い方は下の通りです 下ではダークモードかの判定をしています struct ContentView: View { @Environment(\.colorS…

SwiftUIのViewModifierを使ってみる

SwiftUIでは下のようにModifier(imageScaleやpaddingなど)を中心にコーディングしていきます struct ContentView: View { var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text("Hello, world!") }…

Excluded Architecturesをセットしないと動かない問題について調べる

CocoaPodsを使ってiPhoneアプリを開発していると下のようなエラーが出てシミュレーターで動かせない事があります Could not find module 'SwiftDate' for target 'arm64-apple-ios-simulator'; found: x86_64-apple-ios-simulator, at: /Users/XXX/Library/D…

SwiftUIのbuildifメソッドを確認する

SwiftUIでif文が使えるのはbuildIfに自動変換されていると聞いたのでbuildIfを見てみました buildIfメソッドはViewBuilderのメソッドで下のようなものになります extension ViewBuilder { public static func buildIf<Content>(_ content: Content?) -> Content? wher</content>…

SwiftUIのmaskで画像を切り抜いてみる

SwiftUIのマスクを使って色々試してみました 画像素材は下サイトのものを使わせてもらいました フリーテクスチャ素材館/Calkboard(黒板)テクスチャのシームレスパターン4種類(PHOTO) まずは円形に切り抜いてみました struct ContentView: View { var bo…

XcodeでGitHub Copilotを使う

GitHub CopilotがXcodeを公式をサポートしたようなので試してみました ただBeta Previewsなので今後変更される事が多いことは注意が必要です それとGithub Copilotは事前に契約しておく必要があります github.com GitHubのページのLatest Releaseからdmgファ…

SwiftUIのStyleを使ってみる

SwiftUIのStyleを使うとデザインの共通化ができるようなので調べてみました Styleの定義方法は下の通りです ButtonStyleに準拠した構造体を作ってmakeBodyメソッドを定義します struct CustomButtonStyle: ButtonStyle { func makeBody(configuration: Confi…

SwiftのTextKit2の動作を確認する

下のスライドが面白かったので実際に自分でも動作を確認してみました TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて - Speaker Deck まずはプロジェクトを作って普通にUITextViewを表示してみました class ViewController: UIViewControll…

xcstrings-toolでxcstringsの翻訳データの補完ができるようにする

xcstrings-toolというツールを使うとxcstringsの翻訳データを補完できるようになるらしいので調べてみました github.com 今回はSwiftPackageManagerを使いました CocoaPodsやCarthageは未対応のようです インストールしたらプラグインを追加します プラグイ…

Layout protocolで柔軟なレイアウトを実現する

iOS 16で登場したLayout protocolというのを使うと柔軟なレイアウトができるようなので調べてみました 使い方ですが、まずは下のようにCustomLayoutを定義します CustomLayoutはVStackやHStackのように親ビューとして使う事ができます struct CustomLayout: …

SwiftUIでアニメーションを実装する

SwiftUIでのアニメーションを試してみました まずは画面上にTextを配置します 最初はButtonで試したのですが、自動的にアニメーションが入ってしまうようなのでTextにしました struct TestView: View { var body: some View { Text("Text") } } まずはボタン…

UIButton.ConfigurationでUIButtonのカスタマイズをする

iOS15で登場したUIButton.Configurationを使うとボタンを柔軟にカスタマイズできるようなので調べてみました 通常UIButtonを画面に設置する方法は下の通りです let button = UIButton() button.setTitle("test", for: .normal) button.sizeToFit() button.ce…

ウィジェットをiOS18のホーム画面カスタマイズに対応

iOS18ではホーム画面をカスタマイズできるようになりました カスタマイズすると下のようにホーム画面の色を変える事ができます アイコンの対応方法は下で書いたので、次はウィジェットの対応方法について調べようと思います アプリアイコンをiOS18のホーム画…

アプリアイコンをiOS18のホーム画面カスタマイズに対応

iOS18ではホーム画面をカスタマイズできるようになりました カスタマイズ時のアプリアイコンはiOSによって良い感じに色を付けてくれます ただ自分でコントロールできるようなので、その方法も調べてみました テスト用に下のようなシンプルなアイコンを制作し…

Androidで歩数を取得する

Androidで当日の歩数の取得を試してみました 今回は下のドキュメントを参照しました ヘルスコネクトを使ってみる | Android health & fitness | Android Developers 歩数の取得はヘルスコネクトという機能を利用しました こちらを使うと健康系のデータを簡単…

ContentResolver#requestSyncメソッドでContentProviderへの同期を早くする

ContentResolverのrequestSyncというメソッドで同期を早くできるという話があったので検証してみました それとrequestSyncはシステムのリソースを多く使うという話もありました、実装する際はその辺りも検証しつつ導入した方が良さそうです 今回はGoogleカレ…

Android14の通知について調べる

今更ですがAndroid14で通知周りの変更があったので調べてみました。 まずは普通に通知を送ってみます。 下のように新規にプロジェクトを作成します。 まずは下のようにAndroidManifest.xmlに通知に関する行を追加します。 <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> </manifest>

【Swift】Concurrencyで並列処理を実現する

Swift5.5から登場したConcurrencyで並列処理を実現してみました。 まずは下のように一定時間待ってからprintするメソッドを作ります。 func testFunction() async { try? await Task.sleep(nanoseconds: 1_000_000_000) print(1) try? await Task.sleep(nano…