- 1. LinuxでiPhoneを接続して写真などを転送する方法
- 2. 【SwiftUI】特定の条件でのみアニメーションをループさせる
- 3. Push通知の証明書だけ切れた場合(p12形式)
- 4. 超旧式 iOS でストレージが不思議に一杯に?!
- 5. 【SwiftUI】複数行のLinkを左寄せにしたい
- 6. Swift(iOS)でお絵描きViewを追加する
- 7. 【Swift】コードのみでTableViewを実装する
- 8. Codableを簡単にアウトプットする
- 9. 【Flutter】AndroidでiOS風の画面遷移とスワイプによるバックを実現する
- 10. 【Expo】ImagePickerで画像を複数枚選択する方法
- 11. Lottie-iOS 4.0.0以降でアニメーションがうまく表示されない時の対処法
- 12. 10 duplicate symbols for architecture arm64
- 13. 【Xcode】シュミレーターの位置情報を変更する
- 14. On Demand Resourceをテストする
- 15. Swift Date関連の備忘録
- 16. iPad Airであそぶ 〜Flowを使ったら速くなるか?〜
- 17. SwiftUIを使ってアイコンを爆速で作成する
- 18. 【なぜ】ipaファイルのサイズがビルドする度に毎回違う
- 19. 【Swift】インポート範囲を制限
- 20. SwiftUI FetchRequestでGroup byはできない
LinuxでiPhoneを接続して写真などを転送する方法
# LinuxでiPhoneとデータ転送を行う
今回はLinuxでiPhoneをUSB接続してデータ転送(差分バックアップ)を行います。
## 用意するもの
– iPhone
– Linuxマシン (今回はArch Linuxを使用します。)
– USB A => Lightningケーブル
– パッケージ [libimobiledevice](https://www.archlinux.jp/packages/?name=libimobiledevice)マシン詳細
“`sh:Terminal
$ uname -a
Linux haruki 6.1.7-hardened1-1-hardened #1 SMP PREEMPT_DYNAMIC Thu, 19 Jan 2023 00:16:46 +0000 x86_64 GNU/Linux$ cat /etc/os-release
NAME=”Arch Linux”
PRETTY_NAME=”Arch Linux”
ID=arch
BUILD_ID=rol【SwiftUI】特定の条件でのみアニメーションをループさせる
# はじめに
特定条件の場合のみ、ループアニメーションを付与します。# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2023-02-04 at 20.16.09.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/faa55b56-cd37-17fb-418a-d5e86db9e477.gif)# やりかた
“`swift:ContentView
import SwiftUIstruct ContentView: View {
@State var isAnimation: Bool = false
var body: some View {
VStack(spacing: 50) {
Toggle(“”, isOn: $isAnimation)
.labelsHidden()Button {
Push通知の証明書だけ切れた場合(p12形式)
# はじめに
「あれ?急にiOSアプリにPush通知が届かなくなった」、そんなことないでしょうか?私は今週ちょうどありました。
色々調べてもらって、原因っぽいのがFirebaseに登録している証明書が期限切れになっていたこと。
「じゃあ、証明書更新するか(管理上の問題でPJで更新作業ができるのは私だけ)…」
「あれ?前どうやったっけ?Wikiに書いたけど、Wikiを読んでも記憶が…」ってことになりました。
キャプチャ付きでWikiを書いておけばいいのですが、前回はトラブルシューティングとしてあれこれやった結果、解決した…って感じだったので、テキストで要点しか残っておらず…今回もそうなりそうですが、ひとまずOutputすることで記憶の定着に役立てばと思い記事を書いています。
※この記事は主に自分自身の備忘録です。
※iOSはメインスキルではないので、理解が誤っている部分もあるかもしれません?# やったこと(テキストメモ)
– 認証局に証明書をリクエスト(使用するメールアドレスは管理者権限のアドレスを使用)
– AppleDeveloperでCerti超旧式 iOS でストレージが不思議に一杯に?!
10年以上前に購入した iPad 2 をまだ使っている。iOS はこのモデルの最終版 9.3.5。最新のアプリはもちろんのこと、普通のネットのブラウジングもほぼ全く不可能。
でも、音楽の再生には充分。Music アプリの他、LAN のストリーミングサーバー Jellyfin をブラウザーでアクセス(Jellyfin アプリは使えない)、そして NHK のラジオアプリを使っている。Jellyfin はたまに落るが、NHK アプリ全く問題ない。それが、数ヶ月前から「ストレージ一杯」の警告が出始めた。いらないメディアやテータ、古いアプリを消してみた。でも時間が経つとまたストレージが減って行く。更に削減。全ての写真と音楽ファイルを削除。
それでも。結局消せるものを全て消しても、64GB のストレージの残量が 0 バイトに。アプリの一時的データも保存できないので、操作がガクっと遅くなる。もう使い物にならない。詳細を見ると、ストレージを所有しているのは90%以上が「その他」。(古い OS でデバイス上では見れないが、iTunes で見れる。)。つまり、OS が内部で取っている一時データで、設
【SwiftUI】複数行のLinkを左寄せにしたい
# はじめに
先日SwiftUIの[Link](https://developer.apple.com/documentation/swiftui/link)を使用した際に、複数行の要素を**左寄せ**(=alignmentをleft)にしたかったのですが、少し実装に苦戦したので備忘録です。https://developer.apple.com/documentation/swiftui/link
以下のキャプチャの、1枚目の状態から2枚目の状態にする為の実装方法について書きます。URLが左寄せになっています。
Swift(iOS)でお絵描きViewを追加する# ユーザーに指で描画してもらいたい
![Feb-04-2023 07-29-38.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/3bce0994-373c-de56-41e2-f54e0e8b9b26.gif)
iPhoneをタッチして絵を描いてもらいたい場合、どのようにお絵描きできるViewを追加すればいいのでしょうか?# ライブラリを追加すればOK
https://github.com/Asana/Drawsana
お絵描きライブラリはいろいろありますが、今回はこれで。
### インストール
Swift Package Manager、Carthage、ファイルのドラッグ&ドロップ、の方法がありますが、僕のお気に入りはSwift Package Managerです。### 使う
### とりあえず描く
“`swift
import UIKit
import Drawsanalet drawingView = DrawsanaView()
let penToo【Swift】コードのみでTableViewを実装する
# はじめに
苦手意識のあるUIKitを克服しよう企画!
これからUIKitの記事も投稿します!
今回はコードのみで最小実装のTableViewを作成してみたいと思います。https://qiita.com/SNQ-2001/items/d680d8bb4a73106bdefb
https://qiita.com/SNQ-2001/items/f010a0317734ec99bbdc
まずStoryboardを消します。
これは以前書いたので飛ばします。# 完成サンプル
![simulator_screenshot_D6F38B34-27C3-4D07-BA91-A4B6BDD9DB55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/96425d99-ce65-7f3e-d8e8-392e175d401f.png)# 実装
“`swift
import UIKitclass ViewController: UIViewController {
let av
Codableを簡単にアウトプットする
## はじめに
CodableとはEncode・Decodeの両方を兼ね備えたプロトコルである。
JsonEncoderクラスとJsonDecoderクラスを利用してCodableに準拠した型からJSONへのエンコードとJSONからCodableに準拠した型へのデコードを行う。## 対象者
この記事は下記のような人を対象にしている。– プログラミング初学者
– Encode・Decodeについて知見がある## ソースコード
“`swift:Swift
//Codableに準拠した型
struct SomeStruct: Codable {
let value: Int
}let someStruct = SomeStruct(value: 1)
//Somestruct型をJSONバイト列にエンコード
let jsonEncoder = JSONEncoder()
let encodedJsonData = try! jsonEncoder.encode(someStruct)print(encodedJsonData) // 11 bytes >>>
【Flutter】AndroidでiOS風の画面遷移とスワイプによるバックを実現する
# はじめに
Flutterはクロスプラットフォームなフレームワークですが、Flutterでモバイルアプリを開発していて、Android・iOSという二つのOSで画面遷移時の処理を統一するのに少し工夫が必要だったため共有します。
本記事ではAndroidにおいてiOS風の画面がスライドするようなトランジションエフェクトと、スワイプによる画面バック処理の実装について紹介します。
Androidバックキー押下時に何か処理を実装していた場合、そのままではスワイプによる画面バック動作が無効になってしまうので、その解決を試みました。# 目標
AndroidでiOS風のトランジションと「スワイプで前の画面に戻る」動作を共通で実装させる。# 実装
実装の内容は大まかに以下となります。
1\. AndroidでiOS風の画面遷移をさせる
2\. バックキーに処理を設定する
3\. バックキー押下時の処理とスワイプによるバック動作を併存させる## 1\.AndroidでiOS風の画面遷移をさせる
Flutterのコードを読むと、以下のようにOSによって異なる画面遷
【Expo】ImagePickerで画像を複数枚選択する方法
# はじめに
個人開発中にImagePickerを「Expo ImagePicker 複数枚選択」とググっても「ImagePickerでは複数枚選択できない」とか「MediaLibraryでできる」という記事しかでてこないので記事を書くことにしました。記事の最後にExpoで個人開発したアプリを紹介しているのでもしよければダウンロードお願いいたします!!?
# 前提
* SDK45以上
* expo-image-pickerインストール済み# 結論
下記のようにするだけでした。
“`react
import * as ImagePicker from “expo-image-picker”;
~~
~~
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsMultipleSelection: true, // これをtrueに設定する
quality: 1,
});
“`
これだけでした。Lottie-iOS 4.0.0以降でアニメーションがうまく表示されない時の対処法
## この記事を書くきっかけ
先日、Lottieで3Dレイヤーを含むアニメーションファイルに対応したPRがマージされており、ちょうど3Dレイヤーを含むアニメーションを使用したいためアップデートを行いました。
アップデート後にアニメーションを確認してみると、一部のアニメーションで座標がずれたり、レイヤーの色が真っ黒になってしまうなどの問題がありLottieのissueや検証などを含め解決法を模索しました。https://github.com/airbnb/lottie-ios/pull/1930
## Lottie-iOS 4.0.0の主な変更内容
– Lottie 3.4.0 から対応されているCore Animationがデフォルトで有効になる
– RenderingEngineOptionのデフォルト値が`.automatic`になる
– DecodingStrategy.dictionaryBasedがデフォルトで有効になる
– AppleのフレームワークとのコンフリクトがあるためAnimationViewなどがRenameされている
– BackgroundBehavior10 duplicate symbols for architecture arm64
Google-Mobile-Ads-SDKのエラー
podfileを開いて
‘Google-Mobile-Ads-SDK’, ‘9.14’を’Google-Mobile-Ads-SDK’, ‘9.12’に変更して、pod installすれば治る。【Xcode】シュミレーターの位置情報を変更する
# はじめに
シュミレーターの位置情報をいじれるらしいのでやってみた。位置情報を表示するまではここをコピーします。
https://qiita.com/chi_soft_dev/items/045ec9d91917dc3a7226
# やりかた
① 「Features」を選択します
② 「Location」を選択します
③ 「Custom Location…」を選択します![スクリーンショット 2023-02-01 21.58.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1fd6c9b5-0af4-7f47-a7bf-a2f5a5a77a57.png)
④ 座標を入力します
⑤ 「OK」を選択します
![スクリーンショット 2023-02-01 21.55.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1bbf81f6-9749-6a4b-126d-a507On Demand Resourceをテストする
# On Demand Resourceをテストする
* ライブラリーをODRでダウンロードして使えるかをテスト
## 設定方法
* XcodeのProject SettingのBuild Settingsに移動し、Enable On Demand Resourcesを Yesにする。
* XcodeのProject SettingのResource Tagsタブに移動しタグを追加する。そのタグにODRにしたいAssetを追加する。## 実装方法
“`Swift
Task {
// NSBundleResourceRequestインスタスを先作成したタグ名で生成する
let request = NSBundleResourceRequest(tags: Set([“Tag”]))
// ODRがすでにダウンロードされたかを確認する
let accessible = await request.conditionallyBeginAccessingResources()
// ダウンロードされなかった場合、App StoreからダウンSwift Date関連の備忘録
# **Swiftで曜日を表示する**
**yyyy/MM/dd(EEE)**
DateFormatterから曜日のフォーマットを指定して表示することができるようにする。
[Apple DateFormatter](https://developer.apple.com/documentation/foundation/dateformatter)“`swift
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = “yyyy/MM/dd(EEE)”
let date = dateFormatter.string(from: Date())
“`冗長だけど、、、
DateFormatterから曜日を取得できることを知る前は、以下のように取得していた。
[Apple CalendarComponet](https://developer.apple.com/documentation/foundation/calendar/component)
“`swift
let weekDay = CalendiPad Airであそぶ 〜Flowを使ったら速くなるか?〜
やってみたこと
iPad M1はマルチコアなので、Flow使えば速度あがるのでは?という思いつきから
ElixirDesktopを使えばElixirのライブラリFLowが動けば希望が見えるかも
このコラムではmacでiosアプリのビルド方法等には触れない
実験がメインであるベース↓
https://github.com/elixir-desktop/ios-example-app
こちらに付属するElixirDesktopのTODOアプリを改造してなんちゃってiexを作る
https://github.com/elixir-desktop/desktop-example-app
# ソースを改造する
“`diff_elixir:elixir-app/mix.exs
defmodule Todo.MixProject do
use Mix.Project@version “1.0.0”
def project do
[
app: :todo_app,
version: @version,
elixir: “~> 1SwiftUIを使ってアイコンを爆速で作成する
## この記事の狙い
デザインツールを使わないでSwiftUIのみでアイコン(ボタン)を作成する試みです。[^1]
以下のような未来の職場風景を想像しています。| 今まで | これから |
|:—-:|:———-:|
| | |# ipaファイルのサイズがビルドする度に毎回違う
理由を知っている人がいればぜひ教えて頂きたいです。
また、自分だけの現象なのかというのも知りたいので皆さんの環境ではどうなのかも教えていただけると嬉しいです。iOSアプリ(ipaファイル)をXcodeでビルドしたとき、毎回ファイルサイズが数十バイト程度違っています。
以下は全く同じ手順で3回ビルドをしてみたときのファイルサイズを比較したものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574728/f9d02dbd-431b-d01e-5358-e488f8db32ad.png)同じアプリの内容であれば出来上がるファイルサイズも同じになるはずだと思っていますが、なぜiサイズが異なっているのでしょうか、、、?(実際、Androidアプリ(apkファイル)は何度ビルドしても同じファイルサイズでした。)
(2年ほどiOS/Androidアプリの保守を担当していましたが、今回初めて気づきました。。。)
【Swift】インポート範囲を制限
# はじめに
https://github.com/wmorgue/OnflowStatusこのリポジトリのコードを見ていたら以下のようなコードを見つけました。
“`swift
import struct SwiftUI.AppStrage
“`気になったので記録しておきます。
# やりかた
“`swift
import struct SwiftUI.Color
import class UIKit.UIColor
“`Viewなどにエラーが出ていることから実際にインポート範囲が制限されていることがわかります。
# おわり
インポート範囲を制限すると平均ビルド時間が増えるそうです笑# 参考記事
https://qiita.com/uhooSwiftUI FetchRequestでGroup byはできない
# はじめに
– Xcode 14.2
紹介するサンプルでは以下のModelを使用しています。
![スクリーンショット 2023-01-31 17.12.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687960/c2b2265f-80c8-af88-90c3-dc7b1abbb5d4.png)
# SwiftUIにおけるFetchRequest
SwiftUIでCore Dataの機能が使える`FetchedResults` があります。
これを使うことにより、Core Dataの変化を検知してSwiftUIのViewを更新することが可能になっています。“`swift
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext@FetchRequest (sortDescriptors: [.init(keyPath: \Item.tim
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.20
JAVA関連のことを調べてみた
-
- 2024.09.20
iOS関連のことを調べてみた
-
- 2024.09.20
JavaScript関連のことを調べてみた
-
- 2024.09.20
Rails関連のことを調べてみた
-
- 2024.09.20
Python関連のことを調べてみた
-
- 2024.09.20
Lambda関連のことを調べてみた