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

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

Xcode12.0.1で 任意のOSバージョンのシュミレータを生成できない問題について

iOS14シュミレータで開発中のアプリの動作チェックをやりつつ、現行のiOS13で開発もしたい!!
最新版のXcode12を入れた!!!!

Xcode12ではiPhoneXや8のOSは14なんですね。こちらは問題なく動作できたので、ヨシッ!!

次にiOS13のシュミレータを作る!

“`
シュミレータ生成方法
シュミレータの場所を押下 → Add Additional Simulators押下
“`
はいはいはいはい シュミレータ名付けて、OSVersionを13系統に変えて終わり終わr..
![スクリーンショット 2020-09-28 10.22.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668705/cd7cd36f-1746-db65-14fb-1f57b9d32416.png)

おん?
![スクリーンショット 2020-09-28 10.22.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

【iOS14】起床時間と睡眠時間を完全自動でツイートするショートカットを作ってみた

## はじめに
どうも、自動化大好き人間です。

少し前ですがiOS14がリリースされましたね。
iOS14では、ホーム画面のウィジェットや、Appライブラリ、空間オーディオ、睡眠機能などなど、盛り沢山のアップデートで個人的には神アプデでした。 また、Apple Watch Series6では血中酸素濃度が測定できるなど、ヘルスケア系にかなり力を入れているアップデートだと感じました。

さてさて、自動化が大好きな私ですが、このiOS14のアップデートで最も注目した機能の一つが、**睡眠のオートメーション**です。起床のタイミングでオートメーションを走らせられると色々できるんじゃないかなぁと思います。
そこで、今回は新しく追加された睡眠のオートメーションを使って、「**起床したタイミングで、起床時間と睡眠時間を自動的にツイートする**」ことを実現してみました。
これを使えばみなさんも睡眠に対するモチベーションが爆上がりすること間違いなし(?)です[^1] [^2]

行った手順はこんな感じです。

1. ショートカット「睡眠時間を計算」を作成する(ヘルスケアから睡眠のログを取得、計算)

元記事を表示

【入門】iOS アプリ開発 #10【ゲームの各種設定(難易度やスピードレベル)】

# はじめに

今回はラウンドによって変化する難易度やスピードレベルの詳細を作り込み、[#5【シーケンスの設計】](https://qiita.com/KIKU_CHU/items/0448daadb09ff581d483)で作成した各画面モードを結合して、ほぼ完成の状態に持っていく(以下がイメージ動画)。ソースコードは [GitHub](https://github.com/Kikutada/0007_GameLevelTest) に公開しているので参照してほしい。

※YouTube動画
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/kdrJp0QVgRU/0.jpg)](http://www.youtube.com/watch?v=kdrJp0QVgRU)

# 仕様書

ラウンドによって変化する難易度やスピードレベルの仕様は以下の通り。

![Spec1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678332/b1d67736-7be2

元記事を表示

iOS14 encrypted DNS(DNS over TLS, DNS over HTTPS)

# 概要と注意事項

– iOS14から追加された[DNSSettingsペイロード](https://developer.apple.com/documentation/devicemanagement/dnssettings)による暗号化DNS利用プロファイルの例
– macOS11からでも使えるっぽい
– DNSフィルタリングと組み合わせれば簡単なフィルタリングがOS標準機能で実現できる
– 例えばサンプルのDoHの方であれば、エロサイトを(完全ではないだろうが)ブロックできる
– 解除できちゃうからやっぱりSupervisorでガチガチにするしかねぇ
– ProhibitDisablementがtrueの場合は要Supervisor
– falseの場合、「設定→一般→VPNとネットワーク」で変更が可能
– ちゃんと切り替わっているかは[CloudflareのDebug Information](https://1.1.1.1/help)でしか見ていない
– 値を書き換えれば[Google Public DNS](https://develope

元記事を表示

SwiftUIでフォトライブラリ

#SwiftUIでフォトライブラリを表示する
ボタンをタップして、フォトライブラリを表示します。
フォトライブラリで写真を選択すると、全画面に表示します。

### 環境
Swift 5.3
Xcode 12.0.1
macOS 10.15.7

## フォトライブラリ
フォトライブラリをSwiftUIでラップした構造体を定義します。

““Swift:ImagePicker.swift
import SwiftUI

struct ImagePicker: UIViewControllerRepresentable {
var sourceType: UIImagePickerController.SourceType = .photoLibrary

func makeUIViewController(context: UIViewControllerRepresentableContext) -> UIImagePickerController {
let imagePicker = UIImagePicker

元記事を表示

iOSアプリからGoogleカレンダーにアクセスする

今回はiOSアプリからGoogle Calenear APIを通してGoogleカレンダーにアクセスしてみたいと思います。

環境: Xcode 12.0、Swift 5

# 準備
まず[Google Cloud Platform](https://console.cloud.google.com/apis/library?hl=ja)にアクセスしてGoogle Calendar APIを有効にします。
続いてOAuth認証を行うためのOAuthクライアントIDを取得します。
以下の記事の「クライアントIDを登録」に書かれている手順に従ってクライアントIDの取得の申請を行います。

[Swift4でGoogleCalendarAPIを叩いてみた](https://qiita.com/lily_87/items/5d243c4d439887fb0f35)

# 使用する外部ライブラリ
Google API自体はREST APIになっていますが、これを直接呼び出すのは大変なので外部ライブラリを使用することにします。
今回は以下のライブラリを使用します。

・Google認証
[AppA

元記事を表示

React NativeでのModalの作り方

# はじめに
現在、React Nativeでアプリを開発しており、いい感じのModal(ボタンを押したら下から画面が出てくるやつ)を作ろうとしたのですが、悪戦苦闘したため、記事に残し備忘録の1つとして残します。

#作り方
まずはModal画面に遷移するボタンを作成しましょう。ちなみに、今回はuseStateを使用します。

“`react:App.js

export default function App() {
const [modalOpen, setModalOpen] = useState(false);

return (


Lists

{
setModalOpen(true);
}}

元記事を表示

Visionで画像の位置合わせ

#パノラマ画像や手ブレ補正に使えます

IMG_1399.JPG  ![IMG_1400.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/e5a20718-be27-65ce-5fb7-6df3e1ff5c31.jpeg)
名称未設定.png

#手順

2枚目の画像で登録リクエストを作成します。

“`swift
let request = V

元記事を表示

日本語表示におけるUILabelのbyCharWrappingとbyWordWrappingの違い

#はじめに
Swift の UILabel には折り返しや省略表示を指定するための lineBreakMode というプロパティが用意されています。指定できるモードの中に折り返し位置を単語区切りにする byWordWrapping と、文字区切りにする byCharWrapping があるのですが、byWordWrapping を指定しても日本語の文章は単語区切りで表示されません。それではbyCharWrapping を指定しても byWordWrapping を指定しても違いはないのか、気になったので調べてみました。

#環境
Xcode Version 12.0
Swift 5.3

#byCharWrapping
lineBreakMode に byCharWrapping を指定して表示したところ画像のようになりました。
わかりやすいようにUILabel の背景を黄色にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265215/fd6b3ce1-221e-9f05

元記事を表示

Xcodeでショートカットを自作し 煩雑な pod install 作業をなくそう

## はじめに
業務で同時に複数のプロジェクトを見ることがあり、平均すると1日1回ぐらいterminalを開いてpod-installのコマンドを叩いています。本記事はiOSアプリ開発者が良く使うCocoaPodsのコマンドpod-installの作業を楽にするtipsです。XcodeにはBehaviorsと言う機能があり、様々な動作やイベントを設定・追加できます。 その機能を利用して、自動でterminalを開き所定のdirectoryに移動してpod-installコマンドを叩いてくれるショートカットキーを作成します。

## 開発環境
Xcode12 (Xcode11でも動くと思いますが未検証)
Cocoapods

## セットアップ
#### 1. Scriptを用意
[Script](https://gist.github.com/abhishekbedi1432/c52abef187b376239b8ef3a38a70f77e) をダウンロード

“`sh
#!/bin/sh
osascript <

元記事を表示

【Flutter入門】短期集中講座やったので要点を整理してみた

Android/iOS向けアプリ作りたいけどなんかいい開発環境ないかなぁ。
Electronのスマートフォン版あったら便利なんだけどなぁ。
Flutter?聞いたことはあるけどDartが不人気なことで有名だしなぁ。
(念の為改めて調査してみる)
は?Dartめっちゃいいじゃん!なにこのC言語系の正当進化版みたいな可読性!?何が不人気なの?? →完全にただの記憶違いでしたm(\_ \_)m
Flutterもデスクトップ・モバイル・Webをカバーした理想的な環境っぽいなぁ。
よし、まずは入門だ!
(最終更新:2020.09.27)

## 作業した環境

– OS:macOS Catalina バージョン10.15.7

## 集中講座の元動画様(英語)

[Flutter Crash Course](https://www.youtube.com/watch?v=1gDhl4leEzA)
この記事の位置づけとして、基本的に元動画様に沿って進めていって、補助として個人的に記録しておきたいと思った情報を日本語でわかりやすくざっくりまとめた感じです。

## 作るもの

シンプルな単語ペアジェ

元記事を表示

複数のXcodeバージョンを共存させている時に切り替えを楽にするための小さな工夫

Mac内に複数バージョンのXcodeを共存させる方法に関してはWeb上にいくつもありまして、こちらの記事などが分かりやすいかと思います。
[【iOS開発】Xcodeの旧バージョンをインストールし、最新版と共存させる方法](https://daikimochizuki.com/multi-xcode/)

上の記事にて切り替えのコマンドを紹介していただいていますが、なかなか長いコマンドですし、都度Macのパスワードを入力しなければならないです。
頻繁にバージョンを切り替える必要があると、面倒臭く感じます。

以下の方法で、**エイリアスによってコマンドがごく短くなりますし、いちいちパスワードを入力する手間も省けます。**

私はzshを使っていますので`.zshrc`にエイリアスを記述しています。
bashを使っている方は`.bashrc`と読み替えてください。

環境としては、最新バージョンであるXcode 12と、Xcode 11.3が入っている状態です。

“`zsh:.zshrc
alias xcnew=’echo {Macのパスワード} | sudo xcode-select

元記事を表示

iOS14でデフォルトブラウザ/メーラー変更時にcanOpenURLがfalseになる問題の整理と横展開調査結果

# 前提環境

– Xcode 11.3.1
– Swift 5.1.3
– iOS 14.0 / 14.0.1

# 問題事象

サンプルコード:

“`swift
let url = URL(string: “https://qiita.com”)!
guard UIApplication.shared.canOpenURL(url) else {
return
}
UIApplication.shared.open(url, options: [:], completionHandler: nil)
“`

– **iOS 14.0 / 14.0.1でデフォルトブラウザをSafari以外(Chromeなど)に設定し上のコードを実行すると、ブラウザが起動しない。**
– **Xcode 11 (iOS 13 SDK) でビルドしてもiOS 14の端末では発生する。**
– 14.0から発生しているが14.0.1で解消していないということは、すなわちiOSのバグではなく仕様変更?

<デフォルトブラウザをChromeに変更する手順>
1. iOS 14の端末で、Chrom

元記事を表示

SceneKitに平面のラベルを貼る方法

SceneKitに平面のラベルを貼って情報を出す方法のメモ。

**仕上がり**

1. `GameViewController.swift`に次のコードを追加する。

“`swift:GameViewController.swift
class LabelScene: SKScene {
override public init(size: CGSize){
super.init(size: size)

self.scaleMode = SKSceneScaleMode.resizeFill

let label = SKLabelNode(fontNamed: “Chalkduster”)
label.text

元記事を表示

通信処理で重くなり過ぎないようにするには

API呼び出しはコストのかかる処理で、呼び過ぎるとユーザーの回線に余計な負担を与える。また時間がかかるため、反応が遅いと感じられUXに悪影響を与えることがある。そのためどこでどう呼ぶかを考える必要がある。

### 呼ぶAPIの数の制限

例えばアプリなどで一画面で呼ぶAPIが多すぎると遅くなってしまう。そのため、1画面で呼ぶAPIは2〜3個までなどある程度基準を設け、一度に呼ぶAPI数が多くなり過ぎないように設計する。

### 回線状況の考慮

できれば、ユーザーがそのアプリ等を使う状況を考慮に入れ、通信回線がどのくらい良いかも念頭に置いておくと良い。例えば、電車の案内のアプリであれば、電車内とりわけ地下鉄など電波状況の悪い場所で使う場合もあることから、そのような場面であまり時間のかかる処理を入れるのは好ましくない。

### APIを呼ばなくて済むのではないか検討

同じデータを取ってくるだけなのに何度もAPIを呼ぶのは無駄である。そのため、一度取ってきたデータをデバイスのメモリに一時保存、あるいはストレージに恒久保存して対処する事ができないかを検討する。

また一部のデータが

元記事を表示

Swiftで取得した画像をWKWebView内のHTMLで表示する方法

WkWebviewのコンテンツ内でSwiftで取得したPNG画像などのデータを使いたいケースがあると思います。

本記事では[WebViewJavascriptBridge](https://github.com/marcuswestin/WebViewJavascriptBridge)を使用した、PNG画像のSwiftとJavaScript間での通信にて表示する方法について記載します。

## ローカルのHTMLをWebViewで読み込み(Swift)

まずはWKWebviewでローカルのhtmlを読み込む。

“`Swift:Swift
class ViewController: UIViewController {
var webView:WKWebView?

override func viewDidLoad() {
super.viewDidLoad()
// WKWebViewのViewへの追加
self.webView = WKWebView(frame: view.frame)
vie

元記事を表示

Xcode 12 「Double-quoted include」エラーの対処法

#Xcodeを12にアップデートすると、エラーが大量に。。
![スクリーンショット 2020-09-26 13.51.09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/238f3c1e-cc92-3127-e3f0-2fce0397e917.jpeg)

アプリをビルドすると、**GoogleDataTransport Group**から大量のエラーが発生しました。

“`console
– Double-quoted include “pb.h” in framework header, expected angle-bracketed instead
– Double-quoted include “pb_common.h” in framework header, expected angle-bracketed instead
– Double-quoted include “pb_decode.h” in framework header, expected angle-b

元記事を表示

iOS14でのDatePickerの挙動について(SwiftUI)

#iOS14でのDatePickerの挙動について(SwiftUI)

前回書かせていただいたiOS14(UIKit)でのDatePickerに関してですが、ついでにSwiftUIでも調べたので書かせていただきました。
今回は従来のものから何が追加さたのかというところと実際の使い方のCodeも載せておきます。

## 環境
macOS Catalina 10.15.6
Xcode Version 12.0.1

## はじめに
まずはじめにSwiftUIでのDatePickerの使い方から

“`swift

struct ContentView: View {
@State private var selectionDate = Date()
var body: some View {
DatePicker(“タイトル”,
selection: $selectionDate)
}
}

“`

これだけでDatePicerを使うことができます。
さすがSwiftUI!

AVFoundationでカメラを使う最小構成

毎回調べている気がするので。

必要なプロパティ。

“`swift
var captureSession = AVCaptureSession()
var previewView = UIView()
var previewLayer:AVCaptureVideoPreviewLayer?

var videoDataOutput = AVCaptureVideoDataOutput() // VideoDataの場合
var photoOutput = AVCapturePhotoOutput()// PhotoDataの場合
“`

設定。

“`swift
let device = AVCaptureDevice.default(for: AVMediaType.video)
let deviceInput = try! AVCaptureDeviceInput(device: device!)

captureSession.addInput(deviceInput)
captureSession.addOutput(videoDataOutput)

previewL

元記事を表示

iOS 14 対応

とあるアプリをiOS14に対応した際に起こった問題を書いていきたいと思います。

## DatePickerが配置された画面に遷移するとアプリがクラッシュする…
##### 原因
DatePickerの罫線を表示させたくないため、subviewsを巡り非表示にしているコードがあり、
UIDatePickerのStyleにautomaticが設定されている。
##### 対処
Styleにautomaticが設定されている時の外観が変更されており、wheelsを設定するとクラッシュしなくなった。
根本的には、subviewsを巡り非表示にしているコードを対処する必要がある。いつか…

元記事を表示

OTHERカテゴリの最新記事