iOS関連のことを調べてみた2020年10月07日

iOS関連のことを調べてみた2020年10月07日

Xcode12でのタブ挙動を以前の設定に切り替える

# 概要
Xcode12からタブの挙動が変わりました。
[Window Tab] と更にその下に一段タブが表示される、タブの中に更にタブがあるという動作になり、
それ以前のXcodeのタブ操作に慣れているエンジニアには使いづらい状態となりました。
本記事ではタブの挙動設定を切り替える方法を記載しています。

# タブ挙動設定の切り替え方法
Xcodeメニュー内の
[Preferences] -> [Navigation] -> [Navigation Style]を
[Open in Tabs] から [Open in Place] に変更する。
また、それ以外の細かな設定はそれ以下の設定を任意で変更する(上記設定を変更すると自動で変わる)
![Qiita用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165931/63b14b88-cbe4-1fee-bd25-3c335b5a6938.png)

# さいごに
基本的にはApple様の仕様変更に追随していくのが良いかとは思いますが、
個人的にCm

元記事を表示

File Managerでデータを書き込む、読み出す、削除する

iOSのファイル・ディレクトリにデータを保存・削除する方法です。
![directory-structure-computer-icons-mbox-file-system-png-favpng-PTiJThPRJLFFyTW2S74P2Eb0D.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/fcaeeac3-71da-34db-f3da-c2ab3dfdb38e.jpeg)
ディレクトリにはローカルURLでアクセスします。

#保存

###1、保存用の宛先URLを作る
DirectoryのURLを検索して、FileのURLをつけたしています。

“`swift

guard let url = try? FileManager.default.url(for: .doucumentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent(“savingImage

元記事を表示

StructをJSON形式にして保存する

Structをデバイスに恒久的に保存します。
アプリを閉じてもデータは残ります。
![スクリーンショット 2020-10-07 6.45.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/b295b25a-3947-cbb0-2aca-3b99b5893160.png)
#手順

1、StructをCodableにして、JSON形式でエンコード、デコードできるようにする。

“`swift
struct Chocolates: Codable {
var milk: String = ” Mild and sweet. ”
var bitter: String = ” Taste for the adult. ”
var white: String = ” It’s okay once in a while. ”

var numberOfMilk:Int = 0
var numberOfBitter:Int = 0
var number

元記事を表示

URLからStringへの変換

“`swift

let stringUrl = url.absoluteString
“`

元記事を表示

ショートカットを使ってiPhoneまたはiPadでKindle書籍を簡単に買う

# はじめに

iPhoneやiPadのAmazonアプリではAppleの設けている制約の為、Kindle書籍は購入できません。同じページを Safariなどのウェブブラウザで開いて購入する必要があります。

FirefoxやChromeなどSafari以外のブラウザをインストール済みであれば、Amazonアプリの商品ページで「シェアする」ボタンを押して出てくる共有シートからこれらのブラウザを選択すればよいですが、ここではどうしてもSafariで開きたいという(ぼくの)要望にこたえてみました。

# ショートカットの作成

標準でインストールされているショートカットAppで以下のようなショートカットを作成します。タイトルは “Safariで開く” にしています。

ショートカット: Safariで開く

作成し

元記事を表示

XLPagerTabStripが使われている画面でスワイプバックを使いたい

### 問題
NavigationControllerで遷移した先の画面がXLPagerStripを使用していた場合、配置されてるcontainerView(UIScrollView)に引っ張られて
スワイプバック(`Interactive Pop Gesture`)が効かなくなってしまう。

### 解決策
以下のコードをviewWillAppearに追加する。

containerViewのGestureはNavigationControllerのGestureが失敗した時に実行されるようにする?という感じ。

“`swift
if let naviVc = self.navigationController {
self.containerView.panGestureRecognizer.require(toFail: naviVc.interactivePopGestureRecognizer!)
}
“`

### 参考サイト
* [UIScrollView swipe gesture conflicts with right swipe back – P

元記事を表示

【Flutter】flutter_twitter_loginを使用したiOSビルド時のエラー対策

FlutterでTwitterログインをするため、`flutter_twitter_login`というライブラリを使い、iOS用にビルドしたところエラーが出たので、実際に行った対処法を書いておきます。

# 1. flutter_twitter_login導入

使ったライブラリは[flutter_twitter_login](https://pub.dev/packages/flutter_twitter_login) 1.1.0です。`pubspec.yaml`に依存関係を追加します。

“`pubspec.yaml
dependencies:
flutter_twitter_login: ^1.1.0
“`

次に`Pub get`します。

“`
$ flutter pub get
“`

# 2. Automatically assigning platform `iOS` with version `8.0`

iOS用にビルドすると、以下のエラーが出ました。

“`
Error output from CocoaPods:

[!] Automa

元記事を表示

unityのARFoundationでアプリ作ったのに、実機だとカメラが真っ黒になってしまう時の改善策

unityのARFoundationでARのアプリをエラーなく作ったのに、iosやAndroidで実機で立ち上げると、カメラが真っ黒で映らない!!時の改善方法をご紹介します。

#改善策
* **「camera usage description」** を設定していない

Edit→project settings→Player→iosまたはAndroidを選択(実機の環境)
→camera usage descriptionの欄に

**Camera required for AR**

というように記入してビルド
iosの場合はこれでXcodeの内のinfo.plistにPrivacy – Camera Usage Description が自動的にセットされます。

![スクリーンショット 2020-10-06 17.02.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/13c3af7c-d20f-e92b-f345-dde814670140.png)

* **XR Plu

元記事を表示

AIR GOで無料でAndroid/iOSアプリの脆弱性診断

「[AIR GO](https://air.line.me/air/product#airgo)」はLINEが提供しているセキュリティープラットフォーム「[AIR](https://air.line.me/air/what_air)」のプロダクトの1つで無料でモバイルアプリの脆弱性診断を行ってくれるSaaSです。

AIRの[アカウント登録](https://air.line.me/member/signup)を行えば直ぐに使い始めることができます。

作ったAIRアカウントでログインしてAIR GOを開き、AndroidならAPKファイル、iOSならIPAファイルをアップロードするだけで、直ぐに脆弱性診断が行えます。
URLを入力すると参照先にマルウェアが含まれていないかチェックできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96507/7ddfa51c-dd58-7d0a-eae5-85091dd22b5d.png)

脆弱性診断結果は次のようなレポート形式で表示されます

元記事を表示

[SwiftUI]backgroundの指定場所ごとにどのように変わるかを調べてみた

SwiftUIでbackgroundの指定で思ったように塗りつぶしてくれなかったりしたので、どこで指定したらどのように塗り潰されるかを調べてみました。

### コードとView

“`swift
struct ContentView: View {

var body: some View {
VStack {
Spacer()
Text(“Hello world!”)
.foregroundColor(Color.white)
.background(Color.green)
.frame(maxWidth: .infinity, minHeight: 50)
.background(Color.blue)
.padding()
.background(Color.orange)

元記事を表示

デバイスのライトを点ける

フラッシュや懐中電灯に使われているライトを使う方法です。
点灯消灯を制御できます。

![Oct-06-2020 10-21-18.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/1a6d6f70-bf4a-d3aa-e763-da2e68f159e1.gif)

AVFoundationのAVCaptureDeviceから制御できます。

#1,点灯

“`swift
let avCaptureDevice = AVCaptureDevice.default(for: AVMediaType.video)

if avCaptureDevice!.hasTorch, avCaptureDevice!.isTorchAvailable { // キャプチャデバイスにライトがあるか、 ライトが使用可能な状態か
do {
try avCaptureDevice!.lockForConfiguration() // デバイスにアクセスするときはこれする。

元記事を表示

[swift5]tabBarをタップした場合に処理を実行する方法

## didSelectを使用しよう

https://developer.apple.com/documentation/uikit/uitabbardelegate/1623463-tabbar
Appleの公式リファレンスです。

tabBarをタップした場合に処理を実行したい場合は、`dedSelect`を使いましょう。

“`ViewController.swift
//tabbarをタップした場合のアクション
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
switch item.title {
case “ニュース”:
print(“ニュースアイテムをタップしました”)
case “天気”:
print(“天気アイテムをタップしました”)
case “検索”:
print(“検索アイテムをタップしました”)
default: break
}
}

“`

今回のサンプルコードではswitch文

元記事を表示

特定の角のみ ContainerRelativeShape を適用したい [SwiftUI]

iOS 14 から登場した自動角丸 `ContainerRelativeShape` を、特定の角にだけ利用したいという記事です。

# ContainerRelativeShape とは

iPhone 11 の端末自体や、 iOS14 から登場した Widget など、各箇所固有の角丸UIが増えてきています。
それぞれの箇所で適切な角丸半径で表示してくれるのが、`ContainerRelativeShape` です。

元記事を表示

iosのinputやselectタグなどで画面が拡大されるのを防ぐ

# 課題
iosで input,select,textareaなどの要素をクリックすると下の画像のように拡大表示されてしまう
![IMG_3112.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223280/3df12996-dd6e-3b73-9a62-2dd770c745f4.jpeg)

## 解決方法
それぞれのタグに下記のcssを追加する

“`
input, select, textarea {
font-size: initial !important;
}
“`

## 結果
![IMG_3113.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223280/e36c4fa0-361e-777b-3747-3909313e8753.jpeg)

iosではフォントサイズが16px以下のinputやselectタグをクリックすると拡大されてしまう仕様があるため、こちらでフォントサイズを初期化するよう明示

元記事を表示

【Swift】列挙型について

###1.はじめに

Swiftにはまだ紹介していない、`列挙型`**という非常に重要な記法**があります。
`列挙型`は利用すれば大きな効果を発揮する場面が非常に多いので、特にSwift初心者の方はぜひ私の記事を見ていってください。
なお列挙型には`共用型の列挙型`というものもありますが、こちらについては次回解説したいと思います。

###2.列挙型とは

Swiftでの`列挙型`ではそれ独自のメソッドを定義できるなど、C言語での`列挙型`に比べるとかなり拡張されたものになっています。
以下にシンプルな例を示します。

“`Swift:
enum Direction {
case up
case down
case right
case left
}
“`

これで`列挙型Direction`を定義することができました。
upやdownなどは`列挙ケース`(`ケース`)と呼びます。ケース名は小文字開始のキャメルケースで記述するのが通例です。

また先ほどの例は次のように書くこともできます。

“`Swift:
enum Direct

元記事を表示

CocoaPods で追加するライブラリの Deployment Target を書き換える

Xcode 12 から Deployment Target が iOS 9 以上になりました。CocoaPods で追加するライブラリにも適用され、iOS 9 未満をサポートするものがあれば、適宜アップデートが必要になります。しかしながら、すべてのライブラリが対応済みではない事態も考えられます。その場合は `Podfile` でライブラリそれぞれの Deployment Target を 9 以上になるように書き換えます。

“`ruby:Podfile
def change_deployment_target_for_xcode12(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.build_settings[‘IPHONEOS_DEPLOYMENT_TARGET’].to_f < 9.0 config.build_settings['IPHONEOS_DEPL

元記事を表示

セグメンテーション・マスクの境界を滑らかにする

背景との境界のカクカクを滑らかにします。iOSで使えるフィルターで実現できます。

機械学習のセマンティックセグメンテーションは、出力サイズが512,512程度なので、拡大してマスク画像として用いると、オブジェクトのエッジ境界がカクカクしてしまいます。
![2222.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/610f66c8-a050-51e1-9cd2-e254e783a36f.png)

中央値フィルターという平滑化フィルターを用いることで、境界を滑らかにできます。
![222.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/60c0c4d2-5a93-1217-eabc-144c4d6858c2.png)

*中央値フィルターとは?:ピクセル値を、その周りのピクセル値の中央値に変えるフィルターだそうです。*

iOSではMPSImageMedianフィルターが使えます。

#使い方

元記事を表示

[iOS] Carthageの読み方

今更な話題、そして取り止めもない話題なのですが…

Swift製のライブラリ管理ツール [Carthage](https://github.com/Carthage/Carthage) の読み方ついて、他社の方と話すたびにお互いに違っていることが多くて戸惑います。
ツール自体は定着して結構経つのに、読み方が統一されていない感じですね(笑

# 「カルタゴ」派

Google翻訳に”Carthage”と入力して日本語に変換すると「カルタゴ」が出ます。
[Wikipediaによると古代都市の名前](https://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AB%E3%82%BF%E3%82%B4)だそうです。

その辺りの背景で「カルタゴ」派は少なくない印象です。
弊社でも「カルタゴ」と読んでいます。

でも、ちょっと字面から想像しにくい読み方ですよね…

# 「カーセッジ」派

英語の発音を調べますと、カタカナでの発音(の目安)は「カァー(ル)シィヂュ」だそうです。
https://en.hatsuon.info/word/Carthage

それに近い

元記事を表示

[swift5]カラー指定を16進数で行う方法

## extensionの追加

“`ViewController.swift
//16進数color 機能拡張
extension UIColor {
convenience init(hex: String, alpha: CGFloat = 1.0) {
let v = Int(“000000” + hex, radix: 16) ?? 0
let r = CGFloat(v / Int(powf(256, 2)) % 256) / 255
let g = CGFloat(v / Int(powf(256, 1)) % 256) / 255
let b = CGFloat(v / Int(powf(256, 0)) % 256) / 255
self.init(red: r, green: g, blue: b, alpha: min(max(alpha, 0), 1))
}
}
“`

まず、上記のコードを記述します。その後のカラー指定方法は以下の通り。

“`ViewCont

元記事を表示

【iOS】Widgetをつくる前に知っておきたいこと

iOS14で進化したwidgetを開発するにあたって必要と思われる知識を簡単にまとめてみました。

## widget?

widgetとはアプリのメインコンテンツを特定の位置に配置して表示するものです。

widgetはiOS14でUI的にも機能的にも再設計され、よりユーザーに寄り添った経験をもたらすものとなりました。

ではwidetをつくる際にはどのようなことを知っておく必要があるでしょうか?
HIGは?
UIはどうする?
どんな機能?

まとめてみると以下の要素がありそうです。

元記事を表示

OTHERカテゴリの最新記事