iOS関連のことを調べてみた2021年06月25日

iOS関連のことを調べてみた2021年06月25日

1000枚の写真を10秒で閲覧するフォトビューアアプリを作った

## 「写真いっぱい撮ってるけど、一生振り返る暇ないな…」

という課題意識から、**100枚/秒で写真を閲覧**できる「Somato」というiOSアプリをつくった。

1,000枚の写真であれば10秒で閲覧できる。

まぁ正直100枚/秒はインパクト重視で謳っているところはあるが、意外と20枚/秒ぐらいで高速表示していても不思議と「懐かしいなぁ」と十分に思い出に浸れる。無料なので興味のある人はぜひダウンロードして試してみてほしい。

https://apps.apple.com/jp/app/id1566199421

(M1 Macでも利用可能。MacのApp Storeで”Somato”で検索してください)

本記事ではこのアプリの実装について書く。

## 概論

実は、Somatoは**技術的に尖った部分は特にない**。

ざっくりいうと、**Photos(PhotoKit)で画像を取得し、UICollectionViewで表示しているだけ**。

最初のプロトは1時間もかからずできた。

元記事を表示

iOS 15 で追加された Location Button

_※本記事は、[一般に公開されている情報](https://developer.apple.com/videos/play/wwdc2021/10102/)を元に作成しています。記事中の画像はWWDCのスライドのものを引用させて頂いております_

– [Meet the Location Button \- WWDC 2021 \- Videos \- Apple Developer](https://developer.apple.com/videos/play/wwdc2021/10102/)

## iOS 15 から Location Button が追加された

これは**「必要なときに一度だけ位置情報の利用を許可する」**を簡単に実現できるボタンです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8292/5628a385-eec8-69ce-031c-ec046ee17717.png)

今までは次のように「Current Location」のような `UIButton

元記事を表示

UICollectionViewFlowLayoutとIGListCollectionViewLayoutのsectionInsetの違い

## 前述
[UICollectionView](https://developer.apple.com/documentation/uikit/uicollectionview)のみで実装してあった機能をリファクタリングして、[IGListKit](https://github.com/Instagram/IGListKit)を使った実装に変更したときに`sectionInset`が想定とは異なるところに反映されて少し詰まったので覚書を残しておく
## 違い
[IGListKit](https://github.com/Instagram/IGListKit)を使った実装に変更したときに[UICollectionView](https://developer.apple.com/documentation/uikit/uicollectionview)の[collectionviewlayout](https://developer.apple.com/documentation/uikit/uicollectionview/1618047-collectionviewlayout)

元記事を表示

Unityで作成したAppをiOS実機でテストする方法

# Unityで作成したAppをiOS上で動かす。
[前回](https://qiita.com/Teru_3/items/33ecb088c1ea4e6caceb)はAndroidでUnityのAppを実装したので、今回はiOSで実装を行いました。
備忘録としてまとめます。
完成したものは下です。

元記事を表示

初めてのAppストア申請でリジェクトされた

# Appleを舐めてた
App Storeを見ると、ゴミアプリもあるため、自分がとりあえず作ったアプリも公開できるだろうと思い込み、申請。
見事にリジェクトされ、僕がとりあえず作ったアプリは、ゴミ以下だと認定されました。

## 申請したアプリの概要
飲んだお酒の量や体重を打ち込むと、大雑把な血中アルコール濃度や呼気アルコール濃度を計算してくれるアプリ。
早い人なら1日Swiftを学べば作れるレベルのアプリで、とりあえず、公開方法を知るために公開したかった。

## リジェクト理由
>Guideline 1.4 – Physical Harm
Your app is marketed as a blood alcohol content calculator but does not have associated hardware to perform these calculations accurately. To ensure users’ safety, we only allow blood alcohol content calculator apps that pai

元記事を表示

電子メール添付の日本語ファイル名の名前の後半が化ける(RFC2231形式の長いファイル名)

#はじめに

電子メール添付の日本語ファイル名の名前の後半が化ける現象が確認されました。

ファイル名の後半が化けます。前半は正常です。

確認するとiOS内蔵のメールリーダーで受信したときに化けるようです。(機材の都合でiPadOSで動作確認してます。)

送信メールリーダー(JISで送信):
Sylpheed 3.7.0 (Windows10)
DeepMail (Webメール。バージョン不明。)

受信メールリーダー:
iOS内蔵メール (iPadOS 14.6)

ファイル名の例
正常に表示:
「一二三四五.docx」

文字化けする例:
「一二三四五六.docx」
「一二三四五六七.docx」
「一二三四五六七八.docx」
「算算算算算算算算算算算算算算算算算算.docx」

日本語の6文字目(付近)から化けるようです。(DeepMailはだいたい6文字が限界。Sylpeedは6文字以上行ける場合が多い。)

なお、Mew6.8で送信すると化けません。

補足: Mewは拡張子がtxtだと属性がinlineになりiOS内蔵メールでは引用形式で表示されるためファイル名が見えな

元記事を表示

UIImageのメモリ上のサイズを取得する

**Swift 5:**

“`Swift
let image = UIImage(named: “test”)
if let cgImage = image?.cgImage {
let size = cgImage.height * cgImage.bytesPerRow;
print(size)
}
“`

参考にした記事
https://stackoverflow.com/questions/25483931/ios-get-uiimage-memory-size

元記事を表示

Stringのenumの配列に優先順位をつけて優先度が一番高いものを取得する方法(Comparable使う)

Comparable使えば良いよ

“`Swift
public enum Emoji: String, Comparable {

case neko = “?”
case inu = “?”
case usi = “?”

var priority: Int {
switch self {
case .neko:
return 0
case .inu:
return 1
case .usi:
return 2
}
}

public static func <(_ lhs: Emoji, _ rhs: Emoji) -> Bool {
return lhs.priority < rhs.priority } } let emojis: [Emoji] = [.neko, .inu, .usi, .inu] let topPriority

元記事を表示

iOSデバイスでのRAMサイズの取得

**Swift 5:**

“`Swift
ProcessInfo.processInfo.physicalMemory
“`
GBでの取得の場合

“`Swift
ProcessInfo.processInfo.physicalMemory / (1024 * 1024 * 1024)
“`
参考にした記事
https://stackoverflow.com/questions/20211650/total-ram-size-of-an-ios-device

元記事を表示

iPhone SafariのWebインスペクタが見られない!【Mac Safari14.1.1 / iOS14.6】

通常、MacにiPhoneをUSB接続することで、iPhoneで閲覧中のSafariのWebインスペクタをMacから確認、操作することができるようになります。
普段、自分のアプリを開発する際にはこの機能を活用していました。

ところが、先日MacOSをBigSur11.3から11.4へアップデートしたところ、このWebインスペクタに異常が!!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102360/d26fd502-b0f6-4dac-6557-879a86335be9.png)

Webインスペクタは表示されるのですが、開くタブは3種類しかないし、開いているタブも全然機能していません。
(画像のようにconsole.logしても、なんの反応もありません)

色々調べても日本語のサイトでは不具合情報は見当たらず。
仕方なしに英語で検索してみると、ありました。

[Safari Web Inspector tabs are missing](https://developer.ap

元記事を表示

自作パッケージをCarthageに対応する方法

「Swift Packagesによるライブラリの作成方法」は4部構成です。
記事を順番に読み進めると、Swift Packagesでライブラリを自作して公開できるようになります。

– 第1部: [Swift Packagesでライブラリを自作する](https://qiita.com/uhooi/items/2f36b85f5f41cbd35189)
– 第2部: [自作パッケージをSwift Package Indexに追加する](https://qiita.com/uhooi/items/689801dad2cf2e0a37b4)
– 第3部: [自作パッケージをCocoaPodsに追加する](https://qiita.com/uhooi/items/5ce382cb0c1c6bc018d9)
– 第4部: 自作パッケージをCarthageに対応する __←イマココ__

## はじめに

自作パッケージをCarthageに対応する方法を紹介します。

## 環境

– OS: macOS Big Sur 11.4
– Xcode:12.4 (12D4e)
– Swift:5.

元記事を表示

MRTKをiOSで動かす方法