- 1. 【Flutter】4/8~4/14でPrivacy Manifests対応したサードパーティSDK
- 2. Simulatorビルドかどうか判定する
- 3. 1週間の習慣をサポートするアプリ「シュウカン」をリリースしました
- 4. iosあるある!「HTML&CSSでinputエリアにfocusした際、fixedが効かない問題」がReactコンポーネントでも発生したから解決する
- 5. iOS エンジニアとApple信者のための作業音楽紹介
- 6. 【iOS】シミュレーターと実機で画面の背景色が異なってしまう場合
- 7. WWDC24の開催日程が発表されたので予想をまとめてみる
- 8. iOS 14以降、UICollectionViewのscrollToItem(at:at:animated:)メソッドは特定の状況下で壊れる
- 9. Swift UI入門手順
- 10. 【2024年最新】Privacy manifest対応ガイド!アプリ開発者必見
- 11. Build input file cannot be found: ~~Info.plist ビルドできないエラーについて
- 12. GoogleMobileAds周りでシミュレータでのビルドができなかった
- 13. 【SwiftUI】View内の複数のクロージャはenumで管理しよう!
- 14. Five Must-Know Most Popular Figma to Code Plugins
- 15. #10 換算アプリ
- 16. APIの連続アクセスを防ぎサーバーに優しくなる
- 17. 【Swift】shared?? シングルトンをわかりやすく解説
- 18. 【Simulator】iOS17.2 Simulator環境でパスワードが開けないバグ
- 19. #9 page control、segmented control、button & gesture を使用してコンテンツを切り替える
- 20. #8 色調整
【Flutter】4/8~4/14でPrivacy Manifests対応したサードパーティSDK
Flutterで4/8~4/14に、Privacy Manifests対応したサードバーティSDKの一部を紹介をします.
# flutter_local_notifications: v17.0.1
v16.3.1+1で追加されてたと思いますが、4/13(土)に変更が加わったそうです。![スクリーンショット 2024-04-14 23.08.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670224/63beac3e-9106-8c4a-8285-2e1caab43aed.png)
https://pub.dev/packages/flutter_local_notifications/changelog#1701# fluttertoast: v8.2.5
4/14(日)に対応されたようです。
[#489](https://github.com/ponnamkarthik/FlutterToast/pull/489/files)にて対応されています。
![スクリーンショット 2024-
Simulatorビルドかどうか判定する
UITestを書いていてシミュレータでビルドした時だけ処理をしたかったのでメモ
“`swift
#if targetEnvironment(simulator)
// シミュレータの場合
#else
// 実機の場合
#endif
“`
1週間の習慣をサポートするアプリ「シュウカン」をリリースしました
こんにちは!趣味で個人開発をしているりょうやです。
習慣を管理するアプリをリリースしました。https://apps.apple.com/us/app/%E3%82%B7%E3%83%A5%E3%82%A6%E3%82%AB%E3%83%B3-%E7%BF%92%E6%85%A3%E6%94%AF%E6%8F%B4%E3%82%A2%E3%83%97%E3%83%AA/id6480456838
## アプリ概要
このアプリ「シュウカン」は、1週間の習慣をサポートするアプリになります。「本を1冊読む」「ジムに3回行く」など1週間の中で行う習慣について記録を付けることができます。また、習慣を達成すると獲得できる「ご褒美ポイント」を設定することができ、ポイントによって自分にご褒美を与えてモチベーションを継続させます。
## アプリの機能
### 習慣管理機能
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/4f3525c4-420b-f61d-09bc-5e56c47f
iosあるある!「HTML&CSSでinputエリアにfocusした際、fixedが効かない問題」がReactコンポーネントでも発生したから解決する
# エラー概要
エラー概要参考記事はこちらをご覧ください
https://qiita.com/hibikikudo/items/2cb10536f4816d304f54
https://stackoverflow.com/questions/29001977/safari-in-ios8-is-scrolling-screen-when-fixed-elements-get-focus簡単に画像で説明すると以下のような感じです
### デフォルト
![image_6487328.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492127/878efad2-8707-d082-eaf9-0ba6ceccce9d.jpeg)
]### バグ発生時
![image_6487327.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492127/6cddb1ea-0426-8277-94d8-ce45e1981046
iOS エンジニアとApple信者のための作業音楽紹介
# はじめに
先日、以下の内容でツイートしました:https://x.com/Ktombow1110/status/1778222131807224052
WWDCのプレイリストが公開されているの、意外と知らない人が多いみたい🤔
ということで、Apple が提供している作業用BGMを紹介したいと思います。
今回の紹介ではタイトルに「iOS エンジニアとApple信者」とあるため、 **Apple Music** のみの紹介になります。
# WWDC
このセクションでは、WWDCで公開されるプレイリストについて詳しく紹介します。
WWDC では毎年以下の 2 種類のプレイリストが公開されます。
また、今回紹介するプレイリストは2023年のものになります。2024年も公開されると思うので楽しみですね!## WWDC での楽曲プレイリスト
以下はWWDCにて製品・ツール紹介で使用された楽曲のプレイリストです:ht
【iOS】シミュレーターと実機で画面の背景色が異なってしまう場合
# 状況
某アプリの改修の業務をやっていまして、改修の中の1つとして、storyboardにて新しい画面(ViewController)を追加する必要が出てきたので、追加しました。
基本的な動作確認はXcodeのシミュレーターで行っていて、全ての画面は背景色は黒です。
中の実装も問題ないことを確認し、実機でビルドすると、新しく追加したビューだけ背景色が白く表示されてしまった。
なぜ??シミュレーターでもXcodeでのStoryboardでの見た目もちゃんと黒くなっている。でも、iPhoneの外観モードで、ダークとライトがあるが、ダークが選択された状態だった。これをライトにしたら正常に黒くなってなんで??となった。
でも、他の既存の画面は外観モードがどっちでも背景色は正常に固定となっていた。# 原因
色指定で、「Label Color」を選択していたのが原因だった。見た目は黒だったのでとりあえずこれを指定してしまっていてたが、他の画面はちゃんと「Black」を選択していた。
![image.png](https://qiita-image-store.s3.ap-northeas
WWDC24の開催日程が発表されたので予想をまとめてみる
# 概要
毎年6月あたりに開催されるWWDC24、今年は6月10日から6月14日(日本時間では6月11日から6月15日)の4日間に渡り開催される。WWDCでは例年macOS、iOS、iPadOS、watchOS、tvOSなどのソフトウェアが発表されます。またついでにと言わんとばかりの新しいハードウェア製品が発表されることもあります。# 今出ている予想
それでは本題の予想についてまとめてみます。ここに記載されているものはあくまで予想なので必ず実現されるとは限らないので暇つぶしにと思って読んでいただければ幸いです。
まずはソフトウェアから…### iOS 〜今年はAIの年になりそう〜
1. iOSのソフトウェアで大きく期待されているのは***Siri***です。Apple製品全般に搭載されているSiriですが賢いと言われるほどの機能はありませんでした。ですが今年のアップデートではSiriの機能が大きく変わると予想されています。具体的には複雑な質問に返答できるようになったり、24時間の会話を録音しその日の出来事を理解し何かアクションを起こしてくれるかもしれないなど。後者はプライバシー
iOS 14以降、UICollectionViewのscrollToItem(at:at:animated:)メソッドは特定の状況下で壊れる
問題を回避するには、以下のように`scrollToItemメソッド`の前にページングを `false` に設定し、その後 `true` に戻します。
“`swift
self.collectionView.isPagingEnabled = false
self.collectionView.scrollToItem(at: indexPath, at: .left, animated: false)
self.collectionView.isPagingEnabled = true
“`[参考](https://forums.developer.apple.com/forums/thread/663156)
Swift UI入門手順
:::note alert
大学の研究室内の Wikiに書いた文章をそのまま持ってきてます。
すごく内容が薄いのでガチの初心者の人はもっと高品質な記事を参照してください。
:::# はじめに
Swiftでアプリ作ってみてー
けど何やればいいんかわかんねーって人向けに参考になりそうな書籍や情報を置いとくわ。# 注意点
– 環境構築の方法等はここでは記載しません。(ググればたくさん情報が出てくるので)
– 俺の偏った思想が混じってます# 初学者向け
Mac持ってるから早速アプリを作りたい。。。。。が何から始めたらいいんやって人は
以下の本がおすすめ
![image.png](/attachment/65b3dbc42fb04eea4edc991a)https://www.amazon.co.jp/SwiftUI%E5%AF%BE%E5%BF%9C-%E3%81%9F%E3%81%A3%E3%81%9F2%E6%97%A5%E3%81%A7%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%A7%E3%81%8D%E3%82%8B
【2024年最新】Privacy manifest対応ガイド!アプリ開発者必見
:::note info
**App Storeにリリースする際に、5月1日から対応が必須になります。**:::
# そもそも、Privacy manifestって?
Privacy manifestは、**アプリがどのようなユーザーデータに
アクセスしているかをAppleが把握するための仕組み**です。
アプリがユーザーの情報をどのように使用しているかを開示することで、
ユーザーのプライバシーを保護することができます。https://developer.apple.com/documentation/bundleresources/privacy_manifest_files
# 対応方法
対応方法は以下の2つになります。
– 使用しているパッケージをPrivacy manifest対応バージョンに上げる
– `iOS/Runner` 直下に `PrivacyInfo.xcprivacy` ファイルを追加する# PrivacyInfo.xcprivacyファイルの作成
ここでは、 `iOS/Runner` 直下に `PrivacyInfo.xcprivacy` フ
Build input file cannot be found: ~~Info.plist ビルドできないエラーについて
アプリを作成している中で、ファイル名に謎の空白が存在していることに気づき、途中でファイル名を書き直しました。
するとエラーがでしまいて、ビルドできなくなりました。## 対処法
![スクリーンショット 2024-04-08 0.52.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715605/7f50aa46-9cbc-bfcc-1687-17a270ca70d7.png)緑線🟢で囲っているところ、変更前のプロジェクトファイル名/info.plistになっているはずですので、変更後のプロジェクトファイル名/info.plistに修正する。
## おわりに
学習を進めていく中で、エラーに出会い解決するたび成長を感じます。
これからも少しずつ着実に学習を進めていこうと思います。
GoogleMobileAds周りでシミュレータでのビルドができなかった
# 起こったこと
とあるプロジェクトを久しぶりにXcodeひ開いて、ビルドしてシミュレータで動作確認しようとしたところ、下記のようなエラーが表示されてビルドができませんでした。“`
あとでやり直してください。
Failed to load Info.plist from bundle at path /[パス]/GoogleMobileAds.framework;
Extra info about “/[パス]/GoogleMobileAds.framework/Info.plist”: Couldn’t stat /[パス]/GoogleMobileAds.framework/Info.plist: No such file or directory
“`調べてみたところ、XcodeがGoogleMobileAds.frameworkのInfo.plistファイルをロードしようとして失敗しているっぽい。
# 試したこと
* とりあえず、Clean Build Folder(shift + cmd + K)
* 解消せず
* Xcode 再起動
* 解消
【SwiftUI】View内の複数のクロージャはenumで管理しよう!
## 概要
SwiftUIにおけるViewの中で、複数のクロージャを扱うケースは多々あると思います。
この記事では、そのようなクロージャの管理をenumで行うという提案とその実装方法の紹介をしたいと思います。## 現状の課題
SwiftUIで開発を行なっていると、以下の様なケースがよくあると思います。– 子Viewで発生したユーザーアクションをトリガーに、親ViewのViewModelのメソッドを実行させたい
この様なケースではクロージャを使うことが一般的だと思います。
具体的には、以下のようなコードになります。
“`ParentView.swift
struct ParentView: View {
let viewModel = ParentViewModel()var body: some View {
VStack {
Text(“Parent View”)
ChildView {
viewModel.someFunction()
Five Must-Know Most Popular Figma to Code Plugins
> This article aims to introduce and compare several leading Figma plugins that convert design drafts to code.
### [I. Codia](https://codia.ai)
[Codia AI](https://codia.ai) can convert Figma designs to production-ready code within minutes for web and app development, just like a human coder. This significantly amplifies [design-to-code](https://codia.ai/design-to-code) efficiency by 10 times or more.
Pros:
– The technology stack supported by [Codia](https://codia.ai) includes:
Web: A ric
#10 換算アプリ
今回の開発のインスピレーションは、6月に日本に引っ越す予定の私の経験から来ています。家を探す過程で、日本の物件のサイズの単位が台湾人と異なることに気付きました。そこで、このテーマを中心に開発を進めることにしました。
機能紹介
目標はシンプルで明確です。ユーザーが数値を入力するだけで、他の2つの単位への変換結果を迅速に得られる直感的なインターフェースを提供します。アプリには3つの主要機能が含まれており、それぞれ異なる面積の単位の変換に対応しています。
畳の変換:ユーザーが畳の数を入力すると、アプリが対応する坪数と平方メートル数を計算して表示します。
平方メートルの変換:ユーザーが平方メートル数を入力すると、アプリが対応する坪数と畳数を計算して表示します。
坪の変換:ユーザーが坪数を入力すると、アプリが対応する畳数と平方メートル数を計算して表示します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703986/5f0ec994-f351-5e1e-a6
APIの連続アクセスを防ぎサーバーに優しくなる
# 目的
アプリを開発する上で、自社や外部のサーバーのAPIを叩くのは当たり前になってますが、連続で叩いちゃって迷惑をかけることもあるかと思います。
APIを叩く側で最初のAPIアクセスから指定した時間をブロックするようなコードを書いてみました。いえ、正確にはChatGPTに書かせてみました。## API実行後、10秒間ブロックします
この実装により、最初のリクエストが送信された後、cooldownPeriodで指定された秒数だけ新たなリクエストがブロックされます。タイマーが完了すると、isRequestAllowedフラグが再びtrueに設定され、リクエストの送信が可能になります。
“`.swift
import Foundation
import Alamofireclass ApiRateLimiter {
static let shared = ApiRateLimiter()private var isRequestAllowed = true
private var cooldownTimer: Timer?
pr
【Swift】shared?? シングルトンをわかりやすく解説
# 目次
1. [シングルトンとは何か?](#anchor1)
2. [モーダルのカスタム](#anchor2)
3. [さいごに](#anchor3)
# 1. シングルトンとは何か?
オブジェクト指向プログラミングをしていると、クラスファイルからインスタンスを生成してメソッドを利用することが基本形です。
ここでご質問です。プロジェクト全体で見た時にクラスAのインスタンスは何個ありますか??
そのインスタンスがシングルトンで設計してあれば、答えはひとつです!
つまり、`シングルトンとはインスタンスがひとつしか存在しないことを保証する設計方法のこと`です。
# 2. シングルトンの実装手順
以下のクラスをシングルトンに設計しなおします。
“`Swift: Members.swift
public class Members {
init() {}
private let members: [String: Int] = [“Suzuki”: 21, “Takashima”: 30
【Simulator】iOS17.2 Simulator環境でパスワードが開けないバグ
# 概要
iOS17.2 + Simulator環境で「設定」アプリ内の「パスワード」が開けないバグがあります。
端末関係なく、iOS17.2 + Simulator環境であれば発生するものであると思われます。# 詳細
iOS17.2のSimulatorを起動し、設定(Settings)アプリ -> パスワード(Password)をタップすると、一瞬だけ開いて戻ってしまう挙動が発生している。※ 分かりずらいかもです
### 発生環境
> CPU: M1 Pro (Apple Silicon)
> OS: macOS Sonoma 14.3 (23D56)
> Xcode: Version 15.2 (15C500b)私は以下の環境でバグの発生を確認しました。
–
#9 page control、segmented control、button & gesture を使用してコンテンツを切り替える
今回の課題では、過去に香港の蝋人形館で撮影した有名人との写真を使用して完成させます。
インターフェースの設計
まず、StoryboardにUIImageViewを追加して写真を表示し、UILabelを追加して名前を表示し、UISegmentedControlを追加して異なる写真を選択し、UIPageControlを追加して現在のページの位置を指示します。
IBOutletとIBActionの作成
これらのUIコンポーネントをViewControllerに接続し、IBOutletとIBActionとして接続します。これにより、コード内でこれらのコンポーネントにアクセスして操作することができます。
“`
@IBOutlet weak var imageShow: UIImageView!
@IBOutlet weak var nameSegament: UISegmentedControl!
@IBOutlet weak var picturePage: UIPageControl!
@IBOutlet weak var nameShow: UILabel!
“`UIの初
#8 色調整
今回の課題では、スライダーを使用して、私のお気に入りのバイク、Honda monkey125とロゴの背景色と透明度を動的に変更します。以下のような成果です:
![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703986/b5a601a0-7b48-5cde-3756-5807eee08df2.gif)
インターフェースには、画像を表示するための2つのUIImageViewと、赤、綠、青の色値と透明度を調整するための4つのUISliderが含まれています。また、対応するスライダーを有効または無効にするための4つのUISwitchもあります。全ての設定を初期状態に戻すためのリセットボタンもあります。
背景色の調整
ユーザーがいずれかのスライダーを動かすたびに、changeBackgroundメソッドがトリガーされ、スライダーの値に基づいてUIImageViewの背景色が動的に変更されます。“`
@IBAction func changeBackground(_ sender: UISli