- 1. SwiftUIでキーボードを閉じる
- 2. String Catalog(xcstrings)ファイルでローカライズの手順をおさらい
- 3. classとstructの違いについて
- 4. Privacy Manifestの項目設定要領
- 5. iOS 外部遷移まとめ
- 6. iOSのARアプリの公式のサンプルを実機にいれた話
- 7. [Swift] Swift 5.9 と C++ の互換性
- 8. iPhoneアプリの公式リンク生成を試す
- 9. 【知見メモ】端末の外観モードに合わせてキーボードの外観モードを変更できないケース
- 10. iOS で AppleID の個人情報が開かない
- 11. 【SwiftUI】削って遊べるスクラッチを作ってみる
- 12. Share Extensionからjavascriptを使いSafari内の情報を取得
- 13. 【Qiitaでも使えるよ】PWAって何?
- 14. 【SwiftUI】左右の要素がちょっと見えているバナーを実装する(iOS17)
- 15. 【未経験エンジニア】iOSアプリ開発に臨む
- 16. 【SwiftUI】Chartのスクロール位置を設定する
- 17. ReactNative WebViewのAPIのメソッドを確認してみた
- 18. 【SwiftUI】スクロールするとふわっとコンテンツが下から出現するあれ
- 19. Stable Diffusion を Core ML に変換する
- 20. 【Flutter】画面のスクリーンショット&録画を禁止する方法
SwiftUIでキーボードを閉じる
## SwiftUIでキーボードを閉じたい!
SwiftUIでは、キーボード自体に閉じるボタンを追加することはできません。しかし、画面のどこかをタップするとキーボードが閉じるようにすることは可能です。以下のように、TapGestureを使用して画面全体にタップジェスチャーを追加し、そのアクションでpinFocusStateをnilに設定します。
“`swift
@FocusState var focus:Boolvar body: some View {
VStack {
// Your existing code…
}
.gesture(
TapGesture()
.onEnded { _ in
pinFocusState = nil
}
)
}
“`こちらに完成品のコードございます。pincodeなるものを作りたくて試してました。キーボードが閉じれなくて困っておりました💦
キーボードの上の画面をタップすると閉じます!
String Catalog(xcstrings)ファイルでローカライズの手順をおさらい
# 概要
最近、社内のプロジェクトでローカライズが必要になったので、まとめてみました!!
ただ、今回紹介するローカライズの方法はiOSアプリ開発におけるローカライズのベストプラクティスでは**無いと自負しています**ので、もっと効率的な良い方法があればご指導ご鞭撻賜りたいです。
### 実装方針
ローカライズしたい文字列とその文字列を参照するためのKeyをString Catalog(xcstrings)内で管理します。
これは、ローカライズする際に使用するString Catalogファイルがキーとバリューで画面に表示する文字列を変更してくれるためです!### 結論(学んだこと)
– Xcode15以降ではStringsファイルでなく、String Catalogを推奨されていることとそれを使用する方法
– ローカライズを実装する際に、必要なセットアップ方法と(今の所適切であろう)各言語の管理方法
– 画面に表示する文字列の管理が簡単になる(言語対応しない場合かつ、重複した文字列を使用することが多い場合も楽かも)### こんな人におすすめ
:::note info
以
classとstructの違いについて
## はじめに
私は最近プログラミングスクールにて学習をスタートした初学者で、学習していく中で疑問が生じたので記事にしたいと思います。classとstructの違いについてです。
すごく似ているようで、何か違う、
そのモヤモヤが解決しましたので、記事として残しておきたいと思います。間違っている部分等あるかもしれません。その時はご指摘いただけると幸いです。
## 『class』と『struct』の違い
結論から言いますと、**イニシャライザ(初期化子)の定義を省略できるかできないか**です。classの場合はイニシャライザの定義が**必要**です。
“`swift:class
class Necessary {
var hoge = “イニシャライザ必要”
var huga = 1//イニシャライザ
init(hoge: String, huga: Int) {
self.hoge = hoge
self.huga = huga
}
}//インスタンス化
let necessary
Privacy Manifestの項目設定要領
PrivacyInfo.xcprivacyの各項目の設定値の説明・対応表です。
参考ページ:
https://developer.apple.com/jp/app-store/app-privacy-details/
https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests
https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api
# Privacy Nutrition Label Types
`NSPrivacyCollectedDataTypes`キーの値(配列)の1項目(辞書)の設定値の対応表です。
## データの種類 (Types of data)
下表を参考にCollected Data Type(`
iOS 外部遷移まとめ
# はじめに
そもそも知らない遷移もあるので引き出しを増やすためにもまとめたいと思います。# そもそも外部遷移とは
他のアプリやWebページ、システム設定などにユーザーを導く操作を指します。
アプリからSafari開いたり、iPhoneの設定画面を開かせるアレです。# 外部遷移一覧
さっそく見ていきます! それぞれで必要なimportは記載していません。### UIImagePickerControllerを使用したカメラまたは写真ライブラリの起動
教材でよく見るやつです。
“`swift:Swift
let imagePicker = UIImagePickerController()
imagePicker.sourceType = .camera // または .photoLibrary
present(imagePicker, animated: true, completion: nil)
“`### UIApplicationを使用した外部ブラウザでのWebページの遷移
Webページへの遷移でよく使うのはこちらです。“`swift:Swift
iOSのARアプリの公式のサンプルを実機にいれた話
# はじめに
こんにちは、iOSアプリ開発の初心者のkeitaMaxです。
今回はswiftを触るのが初めてということで、以下のURLにある`Displaying a Point Cloud Using Scene Depth`を実機に入れてみようと思います。
https://developer.apple.com/documentation/arkit/arkit_in_ios/environmental_analysis/creating_a_fog_effect_using_scene_depth
# ダウンロードして実行してみる
まずは以下URLサイトのダウンロードボタンからダウンロードします。
https://developer.apple.com/documentation/arkit/arkit_in_ios/environmental_analysis/creating_a_fog_effect_using_scene_depth
次にダウンロードしたファイルを解凍して、Xcodeでプロジェクトを開きます。
そして、チームの設定をしてデプロ
[Swift] Swift 5.9 と C++ の互換性
# はじめに
`Swift 5.9` から `C++ interoperability` という機能が入りました。
これにより、`C++` と `Swift` に互換性ができ、直接呼び出せるようになりました!https://www.swift.org/documentation/cxx-interop/
詳細は `WWDC2023` の動画を見てると面白いと思います。
https://developer.apple.com/videos/play/wwdc2023/10164/?time=1679
https://developer.apple.com/videos/play/wwdc2023/10172/
では、何が変わったのかを見ていきましょう!
# 実装
まずは従来の方法を紹介します。
(Xcode でアプリ開発をしている前提で話します)
## Swift 5.9 未満で C++ を扱う
今までは3通りの方法がありました。(他にあればコメントくださいmm)
1. `C` でブリッジする(C++ の機能 extern “C” を使う)
2. `Obje
iPhoneアプリの公式リンク生成を試す
下記から自分で公開したアプリ含めて色々なリンクを生成できる。
主には販促用っぽいがXなど他のアプリのリンクも作る。昔のLinkMaker的な公式ツール。## 公式リンク生成ページ
https://tools.applemediaservices.com/app-store
上にアプリ名を入れれば各アプリの生成ページへ。
作れるものは以下
– コンテンツのリンク ( 最も普通なやつ )
– ショートリンク ( apple.coになる )
– App Icon ( アプリの画像のみ )
– Download App Store (いつものリンク)
– 黒 / 白
– 言語選択
– QRコード
– 黒 / 白 / 青
– AppIconあり / なし# 実際に各種やってみる
公開したリテラシー学習アプリ Sukunabiko でやっている例です
## コンテンツリンク
最も通常のリンク
https://apps.apple.com/us/app/sukunabiko/id6478607983?itsct=apps_box_link&i
【知見メモ】端末の外観モードに合わせてキーボードの外観モードを変更できないケース
# 本記事について
端末の外観モードに合わせてキーボードの外観モードを変更できないケースについて紹介します。
## 環境
– iOS 17.0
– Xcode 15.2# 調査概要
端末の外観モードに合わせてキーボードの外観モードを変更したいと要求がありました。
しかし前提として、info.plistのAppearanceをLightにしなければいけませんでした。
その条件でキーボードの色だけ外観モードに対応できるのか調査しました。# 調査結果
– info.plistのAppearanceをLightにすると、端末の外観モードの設定関係なく、UITraitCollectionのuserInterfaceStyleが常に`.light`が返ってくる
– info.plistのAppearanceをAutomaticにすると、上記の問題は解決できるが、ダークモード対応していないアプリだと難しい。“`swift
final class SampleViewController: UIViewController {
override func viewDid
iOS で AppleID の個人情報が開かない
# はじめに
iPhone の設定で AppleID は開くが、その先の `個人情報` がグレーになり、開かないというケースについて悩んでいる人がいたので、原因と解決策をまとます。以下の写真のようなケースです:::note info
そもそも AppleID 自体がグレーになっていて開かない場合についても取り上げます
:::# AppleIDが開かない
AppleID がグレーになり開かない理由は、スクリーンタイムの中で規制されているからです
設定 > スクリーンタイム > コンテンツとプライバシーの制限 > アカウント変更
が`許可しない`になっている場合開かないので、許可してください
# AppleID のその先がグレーになって開けない
開けない理由は2つケースに分けられます
1. ネット接続
【SwiftUI】削って遊べるスクラッチを作ってみる
# はじめに
削って何の絵が出てくるでしょう?みたいなスクラッチゲームを作ってみます。# サンプルアプリ
![Simulator Screen Recording – iPhone 15 Pro – 2024-02-29 at 21.09.57.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/46ea0ca1-267b-f9b2-c91e-579ed2bb7b0a.gif)# 実装
“`swift
import SwiftUIstruct DrawLine: Identifiable {
let id = UUID()
var points: [CGPoint]
}struct ContentView: View {
@State private var pastLines: [DrawLine] = []
@State private var currentLine: DrawLine?
var b
Share Extensionからjavascriptを使いSafari内の情報を取得
## 課題
[Bookmarks](https://apps.apple.com/app/id1590304377)でSafariからリンクをShare Extensionで追加するとき、選択している文字をメモに追加できるようにしてほしいとフィードバックがあった。### 他のアプリの実装例
– Buchen https://apps.apple.com/app/id1549093588## 実装
### スクリプトの作成
“`javascript
var ProcessingClass = function() {};ProcessingClass.prototype = {
run: function(arguments) {
arguments.completionFunction({
“title”: document.title,
“url”: document.URL,
“selected”: document.getSelection().toString()
});
【Qiitaでも使えるよ】PWAって何?
## はじめに
PWAについて皆さんは知っていますか?僕は、1年前まではPWAについて知りませんでした。
iOSも2018年にリリースされたVer.11.3からPWAへ対応するようになり、Iphoneユーザーの多い日本では知名度があまり高くない(エンジニア界隈は除く)と思いますが、今回は自分のようにPWAについて知らない人のために、PWAについて解説していきたいと思います。
## PWAとは
PWAとは「Progressive Web Apps」の略で、Webアプリケーションをネイティブアプリケーションのように動作させるための技術です。PWAの利点として、インストールせずにすぐ利用することができ、かつ
ホーム画面のアイコンからすぐアクセスしたり、通知を受け取ることができるという点があります。誤解を恐れずにいうと、PWAは、Webアプリケーションとネイティブアプリケーションの中間のようなものです。
また、開発者側の利点としてOS毎にアプリを開発する必要がなく、Webアプリケーションを開発するだけで済むので、開発コストを抑えることができます。
### PWAの原則につい
【SwiftUI】左右の要素がちょっと見えているバナーを実装する(iOS17)
# はじめに
キャンペーンのバナーとかでよくみる、左右の要素がちょっと見えているカルーセルUIをSwiftUIで実装してみたいと思います。# サンプルアプリ
![Simulator Screen Recording – iPhone 15 Pro – 2024-02-28 at 23.44.16.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1bb50179-81ea-b625-77bb-91b69dd25855.gif)# 実装
“`swift
import SwiftUIstruct ContentView: View {
private let carouselRange = 0..<10 var body: some View { ScrollView(.horizontal, showsIndicators: false) { HStack { ForEach(car
【未経験エンジニア】iOSアプリ開発に臨む
# はじめに
この記事は、エンジニア未経験者がiOSアプリを開発したらどうなるのか、を記録した記事です。技術に関する単語の誤りや、開発手法に思うことが多々あると思いますが、興味本位で読んでいただければ嬉しいです。
また個人開発や独学未経験でもApp Storeへのリリースができるんだ!と僭越ながらお仲間の方の励みになれば幸いです。# 対象読者
– iOSアプリ開発に興味がある人
– React Native +expo構成に興味がある方
– プログラミングを独学で学んでいるお仲間の方# 作ったもの ♡ kawaii目覚まし時計
可愛らしいデザインと機能性を融合したアラームクロックアプリを作成しました。
機能はシンプルで、目覚ましをセットすると指定した時間に可愛いセリフが流れます。
セリフ10種類のうちランダムで再生されます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676445/89dea3bd-c07a-2439-60e0-ed0d4e3f5f22.png)
▽▽
【SwiftUI】Chartのスクロール位置を設定する
# はじめに
以前、Chartをスクロールできるようにしました。https://qiita.com/SNQ-2001/items/d53fc016523137f57094
今回はChartのスクロール位置を設定できるようにしてみます。
## データ
“`swift
import Foundationstruct Temperature {
let day: Int
let max: Double
let min: Double
}
“`# 実装
### 初期位置のみ設定したい
“`diff_swift
import SwiftUI
import Chartsstruct ContentView: View {
@State private var temperatures: [Temperature] = [
.init(day: 1, max: 23, min: 13),
.init(day: 2, max: 25, min: 10),
.init(day: 3, max: 23
ReactNative WebViewのAPIのメソッドを確認してみた
ReactNative WebViewのAPIドキュメントを読んで、どのようなメソッドがあるかを確認しました。
https://github.com/react-native-webview/react-native-webview/blob/master/docs/Reference.md
## goForward() / goBack()
“`tsx
goForward() / goBack()
“`
ユーザーがウェブページ内で履歴を戻ったり進んだりするための関数です。`goForward()`は一つ前のページに、`goBack()`は一つ前のページに戻ります.## reload()
“`tsx
reload()
“`
現在のページを再読み込みするための関数です。## stopLoading()
“`tsx
stopLoading()
“`
現在のページの読み込みを停止するための関数です。## injectJavaScript(str)
“`tsx
injectJavaScript(str)
“`
WebView内でJavaScriptを実行するため
【SwiftUI】スクロールするとふわっとコンテンツが下から出現するあれ
# はじめに
Webサイトとかだとよく見る、スクロールするとふわっとコンテンツが下から現れるあれをiOSで実装してみます。# サンプルアプリ
![Simulator Screen Recording – iPhone 15 Pro – 2024-02-26 at 21.19.56.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/6bf3ec5c-8189-3250-fa75-b4e7b62d899e.gif)# 実装
“`swift
import SwiftUIstruct ContentView: View {
var body: some View {
ScrollView {
VStack(spacing: 20) {
ForEach(0..<30) { index in GroupBox("新機能\(index)") {
Stable Diffusion を Core ML に変換する
Stable Diffusion も Core ML に変換できる。
MacOSや(実行時間はかかるが)iOSで使うこともできる。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/e67760ec-2a9c-9f66-59f7-578d14e6fdd8.png)
# 変換手順
### ml-stable-diffusion をインストール
アップルのstable duffusionのリポジトリをインストールします。
“`bash
git clone https://github.com/apple/ml-stable-diffusion.git
cd ml-stable-diffusion
pip3 install -r requirements.txt
pip3 install omegaconf
pip3 install safetensors
“`### case 1: Hugging Face Hub の Stable Diffusion モデルを変
【Flutter】画面のスクリーンショット&録画を禁止する方法
## はじめに
みなさんこんにちわ!
Flutterを学び始めて1ヶ月の新米エンジニアの**はるさん**です。現在携わっている仕事にて、『 画面のスクリーンショット&録画を禁止する方法』 について
調査する機会がありました。
いわゆる漫画などのビューワーアプリや映像のビューワーアプリ、機密情報が載っているページなど
その画面の情報が撮影ないしは録画されてはいけないものがあると思います。調査の結果、screen_protectorというパッケージを使えば簡単に実装することが
できるとわかりました。
その実装方法や原理について簡単にまとめてお話ししたいと思います。尚、私はもともとSwiftを使ったiOSアプリケーション開発の学習者です。
UIKit半年、SwiftUI半年学習してきました。
そどちらかうというとiOS側からの視点で説明していきたいと思います。### 記事の対象者
– Flutterを学習し始めた方
– 元々はSwiftをメインで学習していた方### 記事を執筆時点での筆者の環境
– macOS 14.3.1
– Xcode 15.2
– Swift