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

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

結局ScrollViewのConstraintってどうつければいいの?

> 1. UIScrollViewの上下左右をUIViewControllerのViewに合わせる
2. ContentViewの上下左右をContent Layout Guideに合わせる
3. ContentViewの横幅をFrame Layout Guideに合わせる(Equal Widths)
4. ContentViewにオブジェクトを追加して高さを確定させる

> 名前の通り、Content Layout GuideはUIScrollViewの中身、Frame Layout GuideはUIScrollViewのフレーム領域を示します。
> https://qiita.com/owen/items/2fab4a4482834b95e349

## つまづきやすかったこと
### ContentView は自分で UIView を追加して作る
UIViewで囲むのがセオリーとは思うものの、ちょっとAppleさん不親切‥

### Content Layout Guide の制約に注意
ContentView に Content Layout Guide の上下左右の制約をかけ

元記事を表示

[SwiftUI] SceneDelegate を消して ApplicationDelegate だけにする

# これはなに

iOS 13 環境で ReplayKit & UIScene の相性が悪いため、泣く泣く UISceneDelegate を消して UIApplicationDelegate だけにしたときのメモです。

[ReplayKit & UIScene: Assertion when calling RPSystemBroadcastPickerView · Issue \#438 · twilio/video\-quickstart\-ios](https://github.com/twilio/video-quickstart-ios/issues/438)

> If you must use RPSystemBroadcastPickerView then you should consider not using UIScene, and going back to UIApplicationDelegate.

# やったこと

## SceneDelegate をバッサリ削除

Info.plist から `UIApplicationSceneManifest

元記事を表示

ダークモードにまつわる誤解を解いておく

Githubがダークモードに対応したのが昨年12月。調べて見るところ我々開発者には「目に優しい」と認識されている一方、一般層には単に「格好いいモード」と思われていたりなようです。更にそれだけでもないという記事を見つけました。

## 概要
以下、流行ってるな~と思ったので、まとめました。「ダークモード」のメリット、デメリット。本当のところ。[GitHubをダークモードで使う](https://qiita.com/TerToEer_sho/items/7e14149c7172a2eb19c5)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/f77e6e14-4ee6-5ba9-b569-dfe95522d282.png)
[ダークモードに対応したデザイン](https://qiita.com/sugar_tk/items/54562d8756b69774aecf#%E3%83%80%E3%83%BC%E3%82%AF%E3%83%A2%E3%83%BC%E3%83%89%E3

元記事を表示

XcodegenでExcluded Architectureにarm64を設定する

Xcodegenを使用したプロジェクトで、arm64アーキテクチャでビルドしようとしたら以下のようなエラーになった。

“`
The linked framework ‘Pods_[アプリ名].framework’ is missing one or more architectures required by this target: arm64.
“`

調べてみたところ、`Build Settings > Architectures > Excluded Architecture`で、Any iOS Simulator SDKを選び、arm64を追加すれば直るとのこと。しかし、Xcodegenを使ってプロジェクトファイルを生成していたので、project.ymlでの書き方がわからず少しハマった。

以下のように、ターゲットのsettingsに対して、`EXCLUDED_ARCHS[sdk=iphonesimulator*]: arm64`としたら、うまく生成できたのでそのメモ。

“` project.yml
targets:
YourApp:
type: ap

元記事を表示

SwiftyTesseractとOpenCVを入れたら「duplicate symbol」しまくった話

タイトルの通り。`duplicate symbol`が出まくって面を食らったので解決策を備忘録として残しておきます。

# 環境情報

| 名前 | バージョン |
|—|—|
| Xcode | 12.3 (12C33) |
| Swift | 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28) |
| SwiftyTesseract | 4.0.0 |
| CMake | 3.19.3 |
| Python | 2.7.16 |
| xcode-select | 2384 |
| OpenCV | 4.5.1 |

# SwiftyTesseractとOpenCVを同じプロジェクトで使う

二つを同じプロジェクトで使うための手順を示します。

## SwiftyTesseractをプロジェクトに追加する

2021年1月19日現在、[SwiftyTesseractはSwift Package Managerからしか追加できません](https://github.com/SwiftyTesseract/SwiftyTesseract#

元記事を表示

今更だけどUIViewの座標変換系メソッドを理解する(Swift)

![Xcode-12](https://img.shields.io/badge/Xcode-12-brightgreen) ![iOS-14.0](https://img.shields.io/badge/iOS-14.0-brightgreen) ![Swift-5.3](https://img.shields.io/badge/Swift-5.3-brightgreen)

## はじめに
ごくまれに `UIView` の convert 系のメソッドを使って座標を変換したいときがありますがいつもどっちに何指定するのかな?と忘れるのでまとめておきます。

## View 準備
下記のような構成で座標変換をしてみます。

xib

views【Swift5】iOSの設定アプリに遷移するための処理と注意点

# iOSの設定アプリに遷移させるための処理

“`swift
guard let url = URL(string: UIApplication.openSettingsURLString), UIApplication.shared.canOpenURL(url) else { return }
UIApplication.shared.open(url, options: [:], completionHandler: nil)
“`

# 注意点
## ①設定アプリに遷移するときの挙動

「設定アプリ」内にアプリ固有の設定項目がある場合は、アプリ固有の設定画面へ遷移します。

詳細な挙動については、下記の記事が参考になります。
[UIApplicationOpenSettingsURLStringから設定アプリを開いたときの挙動調査
](https://qiita.com/shtnkgm/items/3c32718b4ac7be4d2463)

## ②設定アプリの特定の画面に遷移させる処理(`App-Prefs:root= `)を使うとリジェクトされる

設定アプリの特定

元記事を表示

【Swift】 SpriteKit 入門 ②

SpriteKitの使い方を解説します。
[SpriteKit 入門 ①](https://qiita.com/tosssy/items/ef514ce1f12d497c9da8) で画像を表示させることができたので、続いて画像をドラッグして動かせるようにしていきたいと思います。
(環境:Xcode12.1  Swift5.3)

##画像をドラッグで移動させる
前回作成したMyScene.swiftファイルにコードを追加していきましょう。タッチされた画面上の位置は`touchesMoved()`で取得することができます。また画像(SpriteNode)をコードで操作できるようにMyScene.sksファイルにてNameを設定しておきます(ここではSampleImage)。
`self.childNode(withName: )`のwithNameプロパティには設定したNameを指定します。

![SK1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

UITableViewでcellを長押しして画面遷移する

###はじめに
UITableViewでcell長押しによる、画面遷移の実装に少し詰まったので、
longPressGestureRecognizerを用いて画面遷移する方法を記載します。

###実装方法
まずViewDidloadにてUILongPressGestureRecognizerの宣言を行います。

“`
override func viewDidLoad() {
super.viewDidLoad()

// UILongPressGestureRecognizerの宣言
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longPress(longPressGestureRecognizer:)))

// tableViewにrecognizerを設定
self.view.addGestureRecognizer(longPressR

元記事を表示

Swift UITextFieldをコードで実装

#UITextFieldをコードで実装してみる
`swift`というかアプリ開発の入門書をみると`storyboard`にviewをぺたぺたドラッグ&ドロップするやり方ばっかですよね。
それでもいいんですがワンステップ上に上がりたい方のためにコード実装の仕方を記事にします。
まずは変数を定義しましょう。

“`swift
let textField = UITextField()
“`
この状態でビルドしても何も表示されません。
まあ、変数を宣言しただけなんで当たり前ですよね。
次に、`ViewController`の`view`に入れましょう。

“`swift
view.addSubview(textField)
“`
これで追加できました。ビルドしてみましょう。
![Simulator Screen Shot – iPod touch (7th generation) – 2021-01-19 at 16.23.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567404/53e4e1

元記事を表示

【備忘録】UnityでARFoundation使ってARアプリ(iOS)作る際に、なぜかスマホのカメラが起動せずスマホの画面が黒いままの現象について

Unity: 2019.4.13f1
Mac : BigSur 11.1

表題について、忘れずにメモ
前提として、ヒエラルキーに
ARSessionOrigin
ARSession
は、追加していること
また、デフォルトでついてくるカメラのオブジェクトは消していること

下記やったことまとめ
・ARSessionOringin配下のAR CameraのTagをMainCameraに変更
・File > Build Settings >Player Settings > Playerを変更
 ・Other SettingsのMultiThreadRenderingにチェックをつける
 ・Other SettingsのArchitectureをARM64にする
 ・XR Plug-in Managementをクリックし、Plug-in ProvidersにあるARKitにチェックをつける

で、動いた

元記事を表示

[Swift5].gitignoreファイルの作成方法とデフォルトで記述しておくべきコード

## .gitignoreとは
要約すると`.gitignore`とは、APIKeyなどの他者に知られることで問題が発生する恐れのあるコードをgit(Github)にアップしないファイルを設定するものです。

セキュリティの一環として扱われています。

## .gitignoreファイルの作成方法
ターミナルで対象プロジェクトのディレクトリに移動して以下コマンドでファイル作成

“`
% touch .gitignore
“`

作成したファイルを以下コマンドで開く

“`
% open .gitignore
“`

開いたファイルに以下コードを記述

“`
# Xcode
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcus

元記事を表示

Flutter で仕事したい人のための Widget ツリー入門

ご存知の通り、 Flutter は Widget を入れ子の構造で記述することで UI を構築します。

“`dart
Center(
child: Column(
children: const [
Text(‘Hello, Flutter!’),
SizedBox(height: 16),
Text(‘This is my first app.’),
],
),
),
“`

Flutter の Widget 同士の関係は、このようなソースコードの形状から「入れ子」の構造をイメージしがちですが、 Flutter の仕組みを理解する上では、このソースコードから Widget の __ツリー構造__ がイメージできるようになっておくと何かと役に立ちます。

この記事では、Flutter の仕組みを説明する上でよく使われる __「Widget ツリー」__ について、初学者向けに基本から解説していきたいと思います。

# なぜ Widget ツリーを理解するのか

例えば「中央寄せしたければ `Center`

元記事を表示

既存のWebコンテンツをCapacitorを使ってiOSアプリ化する

Zennと同時投稿→ https://zenn.dev/k_u_0615/articles/ece25c2b0a36f3

## 概要
Capacitorを使ったガワネイティブアプリに注目しています。
Capacitorとは、Webコンテンツをガワネイティブアプリとしてビルドしてくれるフレームワークで、[Ionic Team](https://github.com/ionic-team)が開発しています。
既存のWebコンテンツにCapacitorを使用して、アプリ化したらどのような感覚で実現できるのか気になったので、試してみました。

## アプリ化の対象
今回アプリ化するのは、[Ionic Frameworkの公式ドキュメント](https://ionicframework.com/docs)の右に表示されているデモです。

![スクリーンショット 2021-01-18 12.10.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137148/016a5c86-e8ae-28ba-73fd-ae

元記事を表示

[超個人的メモ] iosシュミレーターのディレクトリ構造を覗きたい時

iOSシミュレーターのディレクトリ構造を覗くには
~/Library/Developer/CoreSimulator/Devices
をひらけば良い。

参考
https://stackoverflow.com/questions/6480607/is-there-any-way-to-see-the-file-system-on-the-ios-simulator

元記事を表示

SwiftUIで作るしりとり地図アプリ

iosアプリ開発を学ぶために、位置情報を組み合わせたしりとりアプリを作成しました。
https://apps.apple.com/app/id1537582064#?platform=iphone

## なんで作ろうと思ったか
モバイルアプリ開発のスキルを身につけるために、すぐに作れるチュートリアル的なものを作ろうと思って作りました。しりとりをするだけのアプリなら1ヶ月くらいで終わるだろうと思って始めたのですが、半年もかかる壮大なプロジェクトになってしまいました。

## 利用技術
– フロント: SwiftUI
– バックエンド: Firebase  

発表されたばかりで目新しかったというだけの理由で、SwiftUIを利用しました。
Swiftそのものを触ったことがない、かつ成熟していない技術のため調べるのが難しいので大変でした。バックエンドはFirebaseのFirestoreとFunctionを活用しました。

## 完成図
### 回答画面
しりとりを回答して送信する画面。
しりとりになっていなかったり、英数字が入力されたりするとバリデーションがかかる。

元記事を表示

JUCE: iOSアプリにSplash Screen (Launch Screen) を追加する

##問題##
ボクのようなアマチュアJUCERはProjucerが無いと何もできないし、でもiOS用のアプリを作りたい。でも、iOS個別のお作法なんて知らないし、UIViewController?は?という状況でも起動時に表示されるSplash Screen(Launch Screen)を追加しなければならないが、勿論全くやり方がわからないし、世の中に転がってる情報は我々には冷たすぎる。

##神様発見##
まず、下記の記事がなければ完全に死亡でした。本当にありがとうございます。
https://qiita.com/Riscait/items/89eca8260535d020e82e
具体的には「Is Initial View Controllerがないせい」の部分です。ビンゴ!でした。

##前提##
もちろんProjucerでアプリを作っている。

##解決方法##
###Storyboardのファイルを作成###
まず、Xcode上でStoryboardなるものを作成しなければなりません。Xcodeで、メニューのFile->New->File…を選択。
![Screen Sh

元記事を表示

Swift チャットアプリのチャット画面が作りたい!

#チャットアプリのチャット画面に必要なもの
コロナ禍の中なかなか就職が決まらず暇なので、チャットアプリのチャット画面を作り方を記事にしたいと思います。
チャット画面に最低限必要なものってなんだと思いますか?
今回は僕が勝手に思う`チャット画面に最低限必要なもの`で実装していきます。
必要なコンポーネントは以下
>tableView: メッセージを一覧表示するのに使います。
MessageCell: プロフィールとかメッセージをまとめます。
profileImageView: プロフィール画像を表示をします。
messageLabel: メッセージの表示をします。

他にも送信時間表示用のlabelとかは?と思われると思いますが、データベースとか使って実際にメッセージの送受信をするわけではないので今回はこれだけにします。

#実装
まずはViewControllerの方から

“`swift
class ViewController: UIViewController {

private let tableView = UITableView()

//メッセ

元記事を表示

SceneEditorから追加したSCNActionに、コードからアクセスする

SCNActionはコードからもしくはSceneEditorから追加できます。
SceneEditorから追加する方法はApple Engineさんの以下の記事がわかりやすいかと思います。

[iOS で SceneKit を試す(Swift 3) その15 – Scene Editor の Action Editor を使ってみる](https://appleengine.hatenablog.com/entry/2017/07/04/195535)

SceneEditorで追加したアクションをコードからリピートしたり組み合わせたりしたい時に。

###ノードがアクションを持っているかどうかの確認

“`swift
node.hasActions
“`

###ノードが持っているアクションのKeyの確認

SceneEditorからアクションを追加した場合、英数字の文字列がデフォルトで割り当てられます。

“`swift
node.actionKeys
“`

###アクションの取得

たとえば、ノードに割り当てられているアクションの最初のものを取得するには以下

“`s

元記事を表示

Swift UIScrollViewの使い方

#`UIScrollView`をコードで実装
独学でアプリ制作しているんですけど、そういえば`scrollView`使ったことないなと思ったので勉強しました!
まず、全く調べずに`scrollView`を使ってみようとしました。
そのコードがこちら

“`swift
class ViewController: UIViewController {

private let label = UILabel()

override func viewDidLoad() {
super.viewDidLoad()

let scrollView = UIScrollView()

scrollView.frame = .init(x: 0, y: 0,
width: view.frame.size.width, height: view.frame.size.height)

view.addSubview(scrollV

元記事を表示

OTHERカテゴリの最新記事