- 1. 【swift】 Autolayout-基礎編2-
- 2. 【SwiftUI】データ管理の基本(Property Wrapper)
- 3. 【知見メモ】SwiftUIでグラデーションを背景色にした時にキーボードの表示でレイアウトが崩れる問題の対処法
- 4. #3 さまざまな UI コンポーネントの研究
- 5. #2 キーボードを見ずに英語を打つ ― プログラミング学習の第0ステップ
- 6. AppのGIF録画に慣れる
- 7. 自動参照カウントARC(Automatic Reference Counting)と弱参照(weak reference)と非所有参照(unowned reference)の比較
- 8. 【Flutter】QiitaAPIとOAuth2.0を使ってのログイン画面を作成する
- 9. AppStoreのページを開こうとすると「ページを開けません。アドレスが無効です。」と表示される話
- 10. 【SwiftUI】端末の音量を強制的に変更する方法【iOSアプリ】
- 11. 【超簡単】Flutterでiosのカメラ使ってみた
- 12. 【Swift】子クラスの実装ミスを根絶するrequired init
- 13. Next.js Learnのアプリをデスクトップアプリ化とスマホアプリ化してみた
- 14. monacaでiOSアプリをデバックビルドするまでの手順
- 15. AppleプロジェクトにFirebaseのカスタムディメンションを作成する
- 16. iOS 17.4で気圧が取得できない問題
- 17. 2024 年 5 月 1 日以降ITMS-91055: Invalid API reason declaration PrivacyInfo.xcprivacy
- 18. 【Swift5】SystemSoundを繰り返し連続で再生する
- 19. SwitchBot API を使い iPhoneショートカットでスイッチ操作
- 20. SwiftUIでiOSアプリを作成してみた~Railsしかわからない人がSwiftUIでTodoアプリを作れるようになるまで~
【swift】 Autolayout-基礎編2-
https://qiita.com/hyis/items/a8f3ca6541c1113180bc
前回に引き続きAutolayoutの説明です。
今回は、Alignmentに対するConstraintsの設定手順を説明していきます。—
1. プロジェクトを作成し、Main.storyboardを開く。
UIViewを下画像のように置き,grayViewと名付け、背景色をLight Gray Colorに設定しておく。2. grayViewを選択(下画像①もしくは②)し、下画像③をクリックでメニューを開き、width(下画像④)を240に、height(下画像⑤)を128に変更し、下画像⑥及び⑦にチェックがついていることを確認しEnterを押下し、制約を設定する。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483508/fd72c7a9-f0af-7b23-a1db-f9ea1195d294.png)
3.下画像のようにgrayViewの周りに赤い線が表示され、Constr
【SwiftUI】データ管理の基本(Property Wrapper)
# はじめに
`@StateObject` と `@ObservedObject` の注意すべき点を知ったので、この機会に他の主要な Property Wrapper も含めて備忘録としてまとめたいと思います。# ■ 値型のデータ
## `@State`
– その View にデータを保持
– 外から渡されるデータではないので `private` が良さそう## `@Binding`
– その View で、親 View に保持されているデータを更新する場合に使う
“`swift
struct SuperView: View {
@State private var value = 0
var body: some View {
SubView(value: self.$value)
}
}struct SubView: View {
@Binding var value: Int
var body: some View {
// SuperView の value を更新できる
}
}
`
【知見メモ】SwiftUIでグラデーションを背景色にした時にキーボードの表示でレイアウトが崩れる問題の対処法
# 概要
本記事では、SwiftUIでグラデーションを背景色にした時、キーボードの表示でレイアウトが崩れる問題の対処法を紹介します。
# 問題の挙動
キーボードを表示した時にグラデーションの適用領域が縮んでしまいます。
![Simulator Screen Recording – iPhone 15 – 2024-03-26 at 09.13.22.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3368292/e9f820f4-a066-89d0-769b-34049f40ac30.gif)
![スクリーンショット 2024-03-26 9.19.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3368292/a2848e6c-ada3-b7e2-bd58-dbcadb6702fc.png)
## 実装
“`diff_swift
import SwiftUIstruct ContentView
#3 さまざまな UI コンポーネントの研究
この度はChatGPTを利用して、内容を整理しました。
Segmented Control
![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703986/e37509c4-8b9c-9e1e-32eb-9676a7e73996.gif)
![1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703986/c2c8a7b8-fef5-5a50-4765-2ad69dd3badb.png)
Swift における Segmented Control は、ユーザーがいくつかの事前定義されたオプション間で選択を行うことができる UI コンポーネントです。以下は一般的なフィールドです。
Segments(セグメント):
Segmented Control は複数のセグメントを含み、各セグメントが一つの選択肢を表します。
セグメントは動的に追加または削除することが可能です。Segment
#2 キーボードを見ずに英語を打つ ― プログラミング学習の第0ステップ
この課題を初めて見たとき、何となく嫌な予感がしました。私はカスタマーサービスをしていますが、実際に仕事でタイピングをする機会はそう多くありません。ほとんどの場合、コピー&ペーストで事足りるからです。そこで、先生の推薦に従って、指摘されたタイピング練習サイトにアクセスしました。最初のうちは、練習過程が非常に難しく感じられました。なぜなら、すべてのタイピング習慣が以前と異なり、どこに手を置くべきか、FキーとJキーの位置を覚え、そして何よりも、最終的にはどうあれ、両手がホームポジションに戻るべきだというさまざまなルールに、これまで私が接したことがなかったからです。約3週間の練習後、私のタイピング速度は分速18文字から徐々に36文字へと向上しました。これもかなりの進歩だと思います。
これからも練習を続け、近い将来、キーボードを見ずに、目を閉じたままでも、自分の考えを文章にできるようになることを願っています。
![火狐截图_2024-03-25T05-06-29.146Z.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.
AppのGIF録画に慣れる
iOSブートキャンプでの学習過程をQiitaに記録していきたいと思います。最初の課題は、シミュレータの録画機能に慣れることでした。そこで、以前に作成したプロジェクトを使ってこの課題を完了することにしました。
それは、私の履歴書アプリです!このアプリは、将来日本の企業面接で使用する予定です。内容には、私が持っているスキルや職務経験などが含まれています。将来的には、自分の履歴書なども追加するかもしれません。
![Simulator Screen Recording – iPhone 15 Pro – 2024-03-25 at 00.19.29.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703986/498545d3-924a-9add-4821-08e3fddb2dd9.gif)
以下はGitHubのリンクです:
GitHub – liyoway/MyResume
自動参照カウントARC(Automatic Reference Counting)と弱参照(weak reference)と非所有参照(unowned reference)の比較
## ARCとは(簡単に説明)
自動参照カウント(Automatic Reference Counting、ARC)は、プログラム内で使用されるオブジェクトのメモリ管理を自動化する技術です。ARCは、オブジェクトがどのくらいの参照を持っているかを追跡し、その数がゼロになると自動的にメモリを解放します。### ARCの例
“`Swift
class Person {
let name: String
init(name: String) {
self.name = name
print(“\(name) の初期化が進行中です”)
}
deinit {
print(“\(name) のインスタンス割り当てが解除されました”)
}
}var reference1: Person?
var reference2: Person?
var reference3: Person?reference1 = Person(name: “John Appleseed”)
// John Applese
【Flutter】QiitaAPIとOAuth2.0を使ってのログイン画面を作成する
## はじめに
みなさんこんにちわ、Flutter学習約2ヶ月の駆け出しエンジニアの*はるさん*です。
ログイン周りの実装を行う際にFirebaseAuthを使うとものすごく簡単に実装できますよね。
しかし企業や案件の全てがFirebaseを使っているわけではありません。
そこで今回はhttps通信を使ってQiitaAPIにアクセスし、OAuth2.0の仕組みを利用してログイン処理の実装を行う方法を書いていきたいと思います。### 記事の対象者
– OAuth2.0での認証と認可を実装したい方
– https通信でAPIを呼び出す実装方法を学びたい方
– ある程度のアプリ開発経験(iOS,Android,Flutterなど)がある方
– flutterで小さなプロジェクトをいくつか作った経験のある方### 記事を執筆時点での筆者の環境
– macOS 14.3.1
– Xcode 15.2
– Swift 5.9
– iPhone11 pro ⇒ iOS 17.2.1
– Flutter 3.19.0
– Dart 3.3.0
– Pixel 7a ⇒ Android
AppStoreのページを開こうとすると「ページを開けません。アドレスが無効です。」と表示される話
単純に知らなかっただけの話ですが、アプリの新しいバージョンがあればストアページを開く処理を実装時のミスのお話です。
通常、各プラットフォームのストアのURLで開くことができます。
iOS(例 code: jp, appID: 999999)
“`
https://apps.apple.com/${code}/app/id${appID}
“`
Android(例 appID: com.example.app_name)
“`
https://play.google.com/store/apps/details?id=${appID}
“`ですが、今回はiOSの場合だけ、ストアを開こうとすると「ページを開けません。アドレスが無効です。」と表示される問題が発生しました。
調べても、モバイルデータ通信をオンにするとか設定周りの事しか書かれていない為、結構時間を食いました。結論から言うと、実装を簡易確認(URLが正しいか)する為にシミュレータで行っていたためでした。
恐らくシミュレータには、AppStoreのアプリが入っていないのでそれが原因のようです。
実機では、正しく動作
【SwiftUI】端末の音量を強制的に変更する方法【iOSアプリ】
[この記事](https://sinn246.wordpress.com/2018/07/12/ios-11-4%E3%81%A7mpvolumeview%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E9%9F%B3%E9%87%8F%E5%A4%89%E6%9B%B4%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E4%BB%B6/)によると、iOSはアプリから端末の音量を操作できないようになっているそうだ。
しかし、[StackOverflow](https://stackoverflow.com/questions/33168497/ios-9-how-to-change-volume-programmatically-without-showing-system-sound-bar-po/50740234#50740234)を参考にすると、無理やりではあるが、音量を変更できるそうだ。その方法と注意点を紹介する。* Swift 5
* Version
【超簡単】Flutterでiosのカメラ使ってみた
# 作るもの
flutter初めたての初心者でも作れる簡単な、写真を選択して表示する簡単なiosアプリを作成しますー!
コードはこちら
https://github.com/naoya25/qiita-camera-app.git
# flutterアプリの作成
“`bash
flutter create camera_app
cd camera_app
“`# image_pickerのインストール
> 公式: https://pub.dev/p
【Swift】子クラスの実装ミスを根絶するrequired init
# 目次
[1.required initとは?](#1-requiredinitとは?)
[2.実例](#2-実例)
[3.おわりに](#3-おわりに)# 1. required initとは?
`required init`とは「イニシャライザにのみ使用できる」、「`required init`をもつクラスを継承する(サブ)クラスでは必ず実装しなければならない」と言った性質を持つ修飾子付きのイニシャライザです。
これを実装することにより、複数人で開発する際のイニシャライザの実装忘れの防止や、設計の共通認識を持つことができます。#2. 実例
早速コードを見てみます。
~~~swift:required.swift
class Human() {
var name: String
var age: Intrequired init(name: String, age: Int) {
self.name = name
self.age = age
print(“called Human class ini
Next.js Learnのアプリをデスクトップアプリ化とスマホアプリ化してみた
# Next.js Learnってなに❓
Googleさんの試験運用中生成AIの解説がわかりやすかったので、拝借🙏>ReactをベースにしたフレームワークであるNext.jsの諸知識や思想を学ぶことができる無料のチュートリアルです。
このチュートリアルでは、請求書を管理するダッシュボードを作成しながら、Next.jsの基礎を学ぶことができます。
認証機能やDB連携、PaaS(Vercel)の活用など、実践的な内容も含まれています。
JavaScriptではなくTypeScriptを使用します。
また、チャプターの途中には、それまでの説明が理解できているかをチェックする簡単な択一式のクイズが用意されています。公式のページはこちら👇
[Learn Next.js | Next.js by Vercel – The React Framework](https://nextjs.org/learn)## 💻 試した環境と該当リポジトリ
[利用したリポジトリ](https://github.com/TakaraShinya/nextjs-dashboard)“`
Apple
monacaでiOSアプリをデバックビルドするまでの手順
# 必要なもの
* monacaの「秘密鍵とCSR」(※手順1)
* アプリの「ドメイン」(※手順2)
* Appleの「CER証明書」(※手順3)
* Appleの「App IDs」(※手順4)
* デバック端末の「UDID」(※手順5)
* Appleの「プロビジョニング・プロファイル」(※手順6)
* [Apple Developer Program](URL “https://developer.apple.com/jp/programs/”)のアカウント
* iPhone
* Mac# 手順1:「秘密鍵」と「CSR」の作成
1. monacaにログイン
2. 「設定」メニューを押下し、「iOSビルド設定」メニューを選択
![スクリーンショット 2024-03-20 10.31.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224077/68d8daac-c7f6-85fc-59da-ec849f05a840.png)
3. 秘密鍵とCSRの生成ボタンを押下
![スクリーンショット
AppleプロジェクトにFirebaseのカスタムディメンションを作成する
# 実施前提
・FirebaseをAppleプロジェクトに追加済みであること
https://firebase.google.com/docs/ios/setup?hl=ja
・Firebaseのデフォルトのイベントでは足りず、カスタムしたイベントをロギングしたい方向け# 目次
[1.Firebaseでカスタム定義の設定](#1-Firebaseでカスタム定義の設定)
[2.Appleプロジェクトにコード実装](#2-Appleプロジェクトにコード実装)
[3.Firebase DebugViewで確認する](#3-FirebaseDebugViewで確認する)# 1. Firebaseでカスタム定義の設定
1. Firebase -> 使ってみる ->プロジェクトを追加
https://firebase.google.com/?hl=ja2. Firebase Console -> Custom Difinitionsを開く
3. カスタムディメンションを作成を押下
– ディメンション名:任意
– 範囲 ユーザーの場合:ユーザープロパティ ユーザの属性変更のタイミング
iOS 17.4で気圧が取得できない問題
## 現象
iOS 17.4で気圧計が取れなくなった。## バグ
気圧計が呼ばれた際にモーション&フィットネスの許諾ダイアログがでるのことが望ましいが、出ない。
おそらくiOSのバグ。## 対処法
– 高度計や歩数計など他のセンサーだとモーション&フィットネス許諾がでるので、無理やり呼び起こす。
– 高度計:iPhone 12以降で有効。気圧取得の文脈に近いためこちらがベター。
– 歩数計:iPhone 12 未満でも対応しているが、気圧の文脈とかけ離れているためユーザへの説明が難しい。Appleさん早く対応してくれ〜😭
## 参考
https://developer.apple.com/forums/thread/747797
2024 年 5 月 1 日以降ITMS-91055: Invalid API reason declaration PrivacyInfo.xcprivacy
2024年5月1日以降アプリを提出する際にPrivacyInfo.xcprivacyが必須になります。うちのアプリでの設定のスクショです。これで通りました。使用APIに対応した理由を選ばないと通りません。
![スクリーンショット 2024-03-18 6.41.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117011/7d11343f-93fe-440c-cb86-c7e853977650.png)
【Swift5】SystemSoundを繰り返し連続で再生する
システムサウンド(効果音)を連続で鳴らす方法について紹介する。
同じ方法でバイブレーションを再生することもできる。“`swift
var counter = 3
“`
“`swift
func soundCallback(sID: SystemSoundID) {
counter -= 1
if counter > 0 {
Thread.sleep(forTimeInterval: 0.5)
AudioServicesPlaySystemSound(sID)
} else {
AudioServicesRemoveSystemSoundCompletion(sID)
}
}func alarmStart() {
let soundID:SystemSoundID = 1036
AudioServicesAddSystemSoundCompletion(soundID, nil, nil, { (soundI
SwitchBot API を使い iPhoneショートカットでスイッチ操作
SwotchBotのアプリでやればいいんですが、たくさん登録してると単純操作が面倒なので、ショートカット化してみました。
アプリを入れてるなら、アプリをショートカットで動かせばいいんですが、アプリを入れてない家族のiPhoneにも入れたかったので、せっかくなのでAPIを使ってみました。## ショートカットの設計
今回登録する機器は、照明なんですが、スイッチを1回押すと電気が付き、もう1回押すと、茶色になり、もう1回押すと消える、みたいな順番で状態が変わる照明です。メニューを出して、下記の3つから選ぶようにしました。「何もしない」があるのは間違えたときの逃げ道(キャンセル)です。
* 何もしない
* ON/OFF(2回押し)
* ON/OFF(1回押し)## SwitchBot API
下記が公式サイトです。
最新はV1.1なんですが、簡単なV1.0にしました。
https://github.com/OpenWonderLabs/SwitchBotAPI/blob/main/README-v1.0.md## トークンの取得
いろんなサイトで記事になっていますが、トークンは
SwiftUIでiOSアプリを作成してみた~Railsしかわからない人がSwiftUIでTodoアプリを作れるようになるまで~
## はじめに
筆者はwebアプリケーションフレームワーク(Rails)しか触ったことがなく、「俺はこのままでいいのか?」と思って今回iOSアプリに挑戦してみました。今までいろいろwebアプリを個人的に作ってきましたが、友達に見せたい時、いちいち「このURLにアクセスしてみて」と言わないといけないし、真っ先に「AppStoreにないの?」と言われてしまう。「このアプリ使ってみて!」とAppStore見せられるほうがカッコいい。
今後デバイスはなんであれApple製にインストールできるアプリの需要は確実にあるはずだから、学んでおいて損はないだろう!と思い今回挑戦しました。## 最初に思ったこと
– iOSアプリのライフサイクル(webページだったらリロードすれば更新されるけど…)
– データベースってどうなるんだ?(MySQLとかリレーショナルデータベース使えるの?)
– デザインどうするの?
– 静的型付け言語か…初めてだな(RubyとかJSしかやってこなかったしC#は理解する前にやめた)
– VScode使えるのかな?(Xcodeじゃないとだめ?)
– デバッグってどうや