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

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

initとは

ググったら一発でわかりやすい記事が出てくるswiftのinitについて。

Modelでファイル作ってプロパティ定義した後にいつもこいつがいる。

initっていうんだからとりあえず初期化してんだろーなーとは勘で考えますが、なんか気になったので書きます。

***

【イニシャライザ】
>型(クラス、構造体、列挙体)のインスタンスを初期化(initialize)する特殊なメソッドのこと

“`

class User {
var id: String
var fullName: String

init(id: String, fullName: String) {
self.id = id
self.fullName = fullName
}
}
“`

init(){}の中括弧の中で、宣言した値を初期化してます。

元記事を表示

ipa作成時に「IPA processing failed」と表示されて作成が出来ない場合の対処方法

# 概要
アーカイブしたプロジェクトから、ipaを作成しょうとすると、「**IPA processing failed**」と表示されて作成出来ない問題が発生しました。

いろいろ調べて解決方法が分かりました。

ネット上では間違った方法が多いので、同じ問題にぶち当たった方のために、解決方法をQiitaに残します。

XcodeのOrganizeから作成しようとした時の画面 **↓**
aaaaa01.png
CIサービス(Bitrise)でも、exportArchiveコマンド実行時にエラー
スクリーンショット 2020-07-31 0.04.57.png【Swift 】[String]()とは

>var interestId = [String]()

変数宣言でよくみるこの配列の後ろについた()

そいやあこいつ、なんで()がついてんの?

って思ったので、忘備録として記録しておきます。

“`
Swiftでの配列の書式とコードの書き方

空で初期化する場合は下記の書き方をします。
var 配列変数名:[型名] = []
var 配列変数名 = [型名]()
“`

ほーなるほど。

var 配列変数名:[型名] = []

と書いても同じなんですね。

空で初期化する時にこの書き方をするらしいです。

元記事を表示

[swift]MVCモデルに関して簡潔にまとめました。

## MVCモデルとは
`Model`,`View`,`Controller`の頭文字をとった略称でそれぞれのフォルダを作成してプログラムの構成を他者が見た場合でもわかりやすくする手法。

この手法は多くのプログラマに使用されており、共通のストラクチャーとして認識してもらいやすい。
また、分業して作業する事ができる点や、変更や修正があった場合に影響を受けにくいなどというメリットが存在する。

## Model
機能に関する処理を行う。(データの処理を行う)

## View
表示と、ユーザーからのアクションを受ける処理を行う。

## Controller
機能とアクションを用いてViewに見せる処理を行う。

## 最後に
今回はMVCモデルに関してかなり簡潔にまとめました。
是非参考にしてください!

元記事を表示

iOSアプリ初リリースからこれまでにApp Store Reviewチームからリジェクトされた理由5選

私の最初のアプリ(WalCal)をAppStoreにリリースしてから、約9ヶ月が経ちました。リリースから今まで計7回AppleReviewの審査リジェクトされました。今回はそのリジェクト内容を紹介します。

# 1. 画像が鮮明ではない
WalCal(ウォーカル)の決済画面に利用可能なクレジットカード会社(VISA, JCB, MasterCard)のロゴ(UIImageView)をStackviewを使い表示しているのですが、これが全体的に伸びてしまったいたためでデザイン面でApple Reviewチームからリジェクトを食らいました。
![IMG_2339_iphonesespacegrey_portrait.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323176/b477d326-2b87-5dcd-5ca4-442b1cb59a67.png)

対処法はUIImageViewのContentModeをScaleAspectFillで設定していたのを、scaleAspectFitに変更しました

元記事を表示

Storyboardに表示されるMinimapを非表示にする

Xcode12からStoryboardでMinimapが表示されるようになりました。
これを非表示にしたいと思ったけれどViewメニューにはありませんでした。

こちらの Editor > Canvas > Minimap が該当コントロールの表示制御。

スクリーンショット 2020-07-30 3.51.43.png

無事非表示にできました。

元記事を表示

Vision.Frameworkの顔検出を試してみた

# はじめに
**Vision.Framework**での顔検出(+少し顔のランドマーク検出)を試してみて、
取得できるパラメーターや現状やりたかったけどできなかったことをまとめました。
(iOS13まで)

# 環境
Xcode 11.4.1
Swift 5

今回は、フロントカメラを表示した際に顔検出を行いました。
実装方法は主にこちら([【iOS12対応】Visionを使って顔検出を行う](https://nn-hokuson.hatenablog.com/entry/2019/07/25/212153))を参考にさせていただきました。

# 顔検出について
request: VNDetectFaceRectanglesRequest

## 顔検出範囲
– 可能
– 横顔の場合
– 目と鼻が出ている場合(口をマスクなどで隠した場合)
– カメラの上下と顔の上下が一致しない場合
– 顔が(縦)半分しかカメラに写っていない場合
– 2mほどカメラから離れた場合

– 不可能
– マスクで鼻から下を隠した場合
– 顔上(下)半分

元記事を表示

自分的にiPhoneシミュレータでiOS開発する際に欠かせない機能8つ

iOS開発には欠かせないiPhoneシミュレータ。

これが非常に出来がよく、実機で出来ることのほとんどをシミュレートしてくれるので、正直自分は実機よりもこちらを使って開発することが多いです。

Mac上でサクッと動作確認できることはもちろん便利なのですが、ショートカットキーを駆使すればキーボードに手を乗せたままいろいろ操作出来るのがこれまた便利。

また、一見出来なさそうに見えるアレやコレも実はシミュレート出来ちゃいます。

というわけで、個人的に便利だと思っているiPhoneシミュレータの機能をまとめてみました。

## 1. iPhoneシミュレータを回転させるショートカットキー

**「command + →」** で右回転、**「command + ←で左回転」** できます。

回転がほぼ必須なiPadアプリを開発するときは特に重宝します。

iPhoneシミュレータを回転させるショートカットキーXcode11で作成したプロジェクトをiOS12に対応させる方法

## はじめに
久しぶりに新規にプロジェクトを作ったのですが、iOS12で動かなかったのでその対応方法です。
Xcode11から SceneDelegate というものがテンプレートで生成されるようになりました。iOS13以降で同一アプリを複数表示するSceneという概念が導入されたことに伴う変更なのですが、iOS12ではSceneの概念がないためクラッシュします。
そのため、iOS12に対応させるためにはひと手間必要になってしまいました。iPhone5sやiPhone6など、まだまだ現役なので対応させない手はありませんよね。

## 開発環境
– Xcode11.5
– Swift

## 対応内容

### AppDelegate

UISceneSession Lifecycleの2つのメソッドをiOS13以降のみビルドされるように修正します。また、SceneDelegateで定義されるようになったUIWindowをAppDelegateに追加します。

“`swift:AppDelegate.swift
@UIApplicationMain
class AppD

元記事を表示

NaturalLanguageフレームワークを使用して日本語のための自然言語処理

Appleには、テキストの分析を支援する `NaturalLanguage` というフレームワークがあります。この記事は、日本語テキスト分析のための自然言語フレームワークがサポートする、いくつかの機能について取り上げます。

“`swift
import NaturalLanguage
“`

– テキストの言語を検知
– 文を単語区分に分割

この例では、入力テキストは以下のとおりです。

“`
データの保存はiOSアプリの持つ主要な機能です。たとえば、ユーザーが指定した色などの環境設定を保存したり、ウェブサイトのトークンをアプリに保存したり、ToDoリストのアプリを作ってタスクを保存したりすることができます。データをシステムに保存する方法はいくつもあります。
“`

## 言語検知

このコマンドを実行して、文の言語を検知できます。

“`swift
func detectLanguage(text: String) {
let recognizer = NLLanguageRecognizer()
recognizer.processString(tex

元記事を表示

【Swift】テキストに取り消し線を付ける

`NSAttributeString` を使って文字列を装飾するやり方をまとめました。

## 完成図

## 実装
“`swift
@IBOutlet weak var textLabel: UILabel!

private func setTestLabel() {
// 表示したいテキスト
let text = “文章の中の一部に取り消し線を付けたい。”
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: text)
// 全体に共通して付けたいレイアウトを設定
attributeString.addAttribute(.font,value: UIFont.syst

元記事を表示

[swift5]Protocolの作成方法

## 実装のポイント
Protocolの作成方法を5つの項目に分けて言語化及び要約してアウトプットしていきます。
初学者の方**(私も初学者ですがw)**はProtocolに関してわからない部分が多いと思いますが、実装の流れを掴む事ができればコードは書ける**(Xcodeのおかげw)**と思いますので**実装の流れ**に注目して下さい!

今回は`ViewController`と`NextViewController`の2画面が存在し、
NextViewControllerからViewControllerへメソッドを委任したいと思います。

## 環境
swift5
Xcode 11

## ①Protocolの作成
まず`nextViewController`で下記コードのように**Protocolの定義**と、**Protocolで使用するメソッドの宣言**を行います。今は使用するメソッドの規則だけでOKです。

“`NextViewController.swift
protocol プロトコル名ProtocolDelegate {
//規則のみ決める
func メソッ

元記事を表示

Xcode 11でビルドしたアプリをiOS 14 betaシミュレータ上で動かす方法

最初の1分ほどの手順で、それ以降はXcode 11からiOS 14 betaシミュレータを直接選び、アプリ(iOS 13 SDK)を実行することが可能になります。

何か問題や気付いたことがありましたらコメントで教えていただけると助かります。

## 準備

* macOS Catalina 10.15.6
* Xcode 12 beta 3
* Xcode 11.5

:link: [More Downloads for Apple Developers](https://developer.apple.com/download/more/)
このApple公式ダウンロードサイトからXcode 12 betaとXcode 11のxipファイルをダウンロードしてインストールしています。
ビルドを行うXcodeバージョンは11.5でなくてもOKです(Xcode 11.6が現時点で最新)。
App Store版のXcodeでは試していないため有効かわかりません。

xipファイルから解凍した各Xcodeは以下の通りに配置しリネームしてあります。
* Xcode 12 beta 3: /A

元記事を表示

AutoLayoutで使えそうなUIViewのConstraintsExtension

#Contraint用Extensionがおすすめ
コードベースで書いた経験が少なかったため、Constraintをどうするか調べていたところ、とても参考になる記事がありました。
一部自分で手を加えましたが、とても使い勝手が良いです。

“`
extension UIView{
func anchor(top: NSLayoutYAxisAnchor? = nil,
left: NSLayoutXAxisAnchor? = nil,
bottom: NSLayoutYAxisAnchor? = nil,
right: NSLayoutXAxisAnchor? = nil,
paddingTop: CGFloat = 0,
paddingLeft: CGFloat = 0,
paddingBottom: CGFloat = 0,
paddingRight:

元記事を表示

【個人開発】FlutterとFirebaseでサボり防止アプリを作った

先日、個人開発アプリをリリースしました!やったね!!!

審査も通りまして、現在App StoreとPlay Storeで配信されております。

せっかくなので、利用した技術のメリットと注意点をまとめておこうと思います。

# 作ったアプリ

これです。

広報用ページも作ってみたのでリンクを貼っておきます。

広報用ページはスマホで見る用にレイアウトしてます。

[監視し合う会 〜お互いサボらないようにみんなで作業しよう〜](https://kanshi-shiau-kai-app.web.app/)

英語名: Procrastinators Watch Mutually

![kanshi_feature_1024_500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85139/23774597-120a-15dc-2a0e-808fe874427a.png)

## 解決したい課題

やらなきゃいけないことがあるのに、なかなか取り組めずにグダグダしてしまう経験がみなさんあると思います。

元記事を表示

Fastlaneを使って、Firebase App Distributionを自動化する

Fabric終了に伴い、Firebase App Distributionを用いてアプリを配布しているプロジェクトは数多くあると思います。
手動で配布することもできるのですが、その場合、
1. ipaファイル作成
2. Firebaseコンソールに移動
3. ファイルのアップロード
4. テスターの指定
などと毎回同じ作業をするのは面倒です。

そこで個人プロジェクトでこちらの作業をfastlaneコマンド一発でできるようにしたので、その時の手順を記します。

今回解説するのは
– fastlaneのセットアップ
– fastlaneによるipa作成、アップロード方法
です。

# Installing fastlane

まずはHomebrew経由でfastlaneをインストール

“`
brew install fastlane
“`

プロジェクトのルートディレクトリで下記コマンドを実行。
fastfileが作成され、こちらに後ほど配布するためのコードを記述します。

“`
fastlane init
“`

プラグインを追加

“`
fastlane add_plug

元記事を表示

Codemagic でモバイルアプリの CI/CD を始めましょう

この記事は、Codemagic の運営元である Nevercode Ltd の依頼で作成しました。2020/7/6 に公開された [オリジナルの英語記事](https://blog.codemagic.io/getting-started-with-codemagic/)の日本語訳に加え、冒頭に私のコメントを、末尾におすすめの Codemagic 関連の日本語記事へのリンクを列挙しています。

Codomagic は、[今年の2月に発表された Flutter UX 調査チームによる Q4 2019 の調査結果](https://medium.com/flutter/improving-flutter-with-your-opinion-q4-2019-survey-results-ba0e6721bf23)において、開発者が CI/CD で採用しているサービスのトップ3に挙げられており、(Codemagic、 Github Actions、 GitLab)、その中でも満足度が最も高かったことが示されています。

Codomagic は、Google と提携して Flutter

元記事を表示

Xcodeシミュレーター管理コマンド

こちらが、Xcodeがローンチしたシミュレーターを管理するために実行できるコマンドです。

これらのコマンドは、あなたの端末で実行してください。この記事は、あなたが `iPhone 11 Pro Max` と名付けられたシミュレーターを実行していると仮定しています。

## 時刻を変更する

“`bash
xcrun simctl status_bar “iPhone 11 Pro Max” override –time ‘9:41’
“`

## セルラーネットワークを変更する

Wi-Fiに切り替える

“`bash
xcrun simctl status_bar “iPhone 11 Pro Max” override –dataNetwork ‘wifi’
“`

Wi-Fiの信号強度を制御する

“`bash
xcrun simctl status_bar “iPhone 11 Pro Max” override –wifiBars 0
xcrun simctl status_bar “iPhone 11 Pro Max” override –wifiB

元記事を表示

たった14行でiOSアプリ内のリンクをリッチに表示する方法

FacebookやTwitterでURLを投稿すると、リンク先のタイトルや画像を自動で取得してカードのようなUIとして表示されるのを見たことがあるでしょうか。そんな機能を簡単に実装できるApple標準のフレームワークがXcode11以降で使えるようになりました。

# 例えばYoutubeのリンク
Youtube動画の場合、リンクをアプリに埋め込むとそのまま再生できました。

OTHERカテゴリの最新記事