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

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

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動画の場合、リンクをアプリに埋め込むとそのまま再生できました。

[swift5]tableViewの基礎文法

## 投稿の経緯
現在独学でiOS開発を学習中。
学習教材は**Udemy**で人気の高かった**【iOS13対応】未経験者がiPhoneアプリ開発者になるための全て iOS Boot Camp**を使用。(サイトは下記URL)
https://www.udemy.com/course/ios13_swift5_iphone_ios_boot_camp/

学習内容をアウトプットします!

## tableViewとは
要約すると**リスト型のパーツ**。tableViewControllerは**リスト型のコントローラー**ということ。

## tableViewのデリゲート宣言
`UITableViewDelegate`, `UITableViewDataSource` の2つが必要。

記述するとエラーが発生するが、それはtableViewの実装に必要なメソッドが
不足しているというエラーで、Xcodeの補完に沿ってメソッドを作成すれば解消される。

## tableViewの構築に必要なメソッド
#### ①セルのセクションを決めるメソッド

“`ViewController

元記事を表示

ゲームアプリ制作におけるベジェ曲線の可能性

## はじめに

### アプリの絵がぼやける理由
アプリを遊んでいて「絵がぼやけてる」と感じたことはありませんか?
解像度の大きな端末に乗り変えたら、お気に入りのアプリの表示がボケボケで、切ない気分になった人は少なからずいるのではないでしょうか?

これは、アプリの画像素材のほとんどがペイント形式で作成されているからです。
ペイント形式とは画素を並びで保持する形式なのですが、拡大や回転による品質の劣化が起こります。

例えば、**1280×720** のキャラクタの立ち絵がペイント形式で用意されていて、アプリが画面全体に表示させたとします。
解像度 **1280×720** の端末であればクッキリと表示されますが、**2560×1440** の端末だと画素が引き延ばされて画像がぼやけてしまうことになります。

### アプリの文字がぼやけない理由
さて、こうも思ったことはありませんか?

「文字だけやけにきれいに見える」

これは、文字がドロー形式で表示されているからです。
ドロー形式とは、データとして座標や色情報などを保持しておき、計算で絵を生成する形式のことです。

先の

元記事を表示

画像サイズについて

<Navigation Drawerに表示するヘッダの画像サイズについて>
Navigation Drawerの幅は240〜320dpにすべき
https://qiita.com/nein37/items/6c57fe5ec94a7914872c

<画像サイズについて>
Androidにおいて、一般的なスマートフォンの横幅は320-384dp
xxxhdpi  640dpi以下で作成
xxhdpi   480dpi以下で作成
xhdpi   320dpi以下で作成
hdpi  240dpi以下で作成
mdpi    160dpi以下で作成

iOSにおいて、320pxはiPhone 3GS非Retinaの画面幅いっぱいのサイズ
->Retinaはそこから倍数だったが、途中から中途半端になってきた
(iPhone 4 ~ 5sまでは Retinaで = 640)
https://qiita.com/Yuta/items/98b9ea2739718b9184de

iOS/Android アプリ開発で必要な画像のサイズ一覧 (アイコン・スプラッシュ等)


https:/

元記事を表示

iOS: gRPC(Protocol Buffers) + ReactiveSwiftのサンプル

# サンプルの説明
– .protoファイルをcocoapodsを利用してビルドする方法です。(grpc-swiftではありません。)
– 生成されたObjective-Cのコードを、Swiftから利用します。
– gRPCでAPIにアクセスする処理をReactiveSwiftのSignalProducer, Signalを返すようにラップしています。

# サンプルコードのリポジトリ
https://github.com/yusuke-imagawa/iOS_gRPC_ReactiveSwift_sample
.protoファイル, gRPC, ReactiveSwiftの連携部分だけを実装しています。
UIは実装していません。

# 使い方
– pod installを実行。

# cocoapodsで.protoファイルから、コードを生成するための設定

## .protoファイル
[user.proto](https://github.com/yusuke-imagawa/iOS_gRPC_ReactiveSwift_sample/blob/master/RemoteClien

元記事を表示

iOS Simulator でタイムゾーンを変更して実行する方法

タイムゾーンを越えたテストなど、iOS Simulator のタイムゾーンを変更したいときってありますよね?

さっとググると、MacOSのタイムゾーンを変更しろ!なんて情報がありますけど、MacOS の他のアプリケーションにも影響しそうで積極的にはやりたくありません。

別の方法はあるのでしょうか?

いろいろと調べたところ、結論からいうと、ビルド時の環境変数 TZ を変更することで、ビルドしたアプリ限定でタイムゾーンを変更できるようです。
正確には Simulator のタイムゾーンは変更されないのですが、僕が確認したかった範囲ではこれで十分だったので有用と思いましてまとめました。

## 手順

まずは、xcode 左上のアプリ名のところを選択して、「Edit Scheme…」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39548/60fd52bd-2ccf-d898-f4a2-e03250ee5d71.png)

次に、、下図のように選択します。

![i

元記事を表示

UnityのiOSビルド時にBuild SettingsやBuild Phases等の項目を自動追加する方法

## 実装環境
– Unity 2019.2.21f1
– Xcode 11.6

## 参考サイト
https://stackoverflow.com/questions/56479894/unity-3d-postprocessbuild-how-to-add-new-run-script-to-pbxproject-from-unity

## 方法
1. 参考サイト記載の[サンプルプログラム](https://drive.google.com/file/d/1TVv8ZNIgvv6tAomf7oGt9zPI3IA4rB1P/view)をダウンロードし、’Assets/Editor’フォルダ下に設置

2. `Users/UserOnPostBuild.cs`内の`EditProj`メソッドを適宜書き換える

“`C#:PostXcodeBuild.cs
private static void EditProj(string pathToBuiltProject)
{
// 項目追加に必要な情報を取得(必須)

元記事を表示

[Swift] var-forパターンを避けよう

# はじめに

**var-forパターン**は既存の言葉ではありません。
このアンチパターンよく見かけるので自分で**var-forパターンと勝手に命名**しました。
コードレビューとかで**「これvar-forパターンだよね」**という感じで使えるかもしれません。

本記事の内容はSwiftの初心者向けです。

# var-forパターンとは

以下のような**一時変数varとfor文(forEach、while、repeat-whileなども含む)**を利用したロジックです。

例題)1から10までの整数を3倍して、6の倍数のみの配列を生成

“`swift
var result = [Int]()
for number in 1…10 {
let tripleNumber = number * 3
if tripleNumber % 6 == 0 {
result += [tripleNumber]
}
}
“`

よくあるのが、配列から特定の条件を満たした別の配列を作る時です。

## var-forパターンの置き換え

たい

元記事を表示

【厳選】これだけは覚えておきたいXcodeショートカットまとめ

#コード編集
| ショートカットキー | 結果 |
|:—————–|——————:|
| Cmd + I | インデント整理 |
| Cmd + / | コメントアウト |
| Cmd + Click(※) | 定義へ移動 |
| Opt + Click | Quick Help(リファレンス) |
| Cmd + Ctr + E | ファイル内変数のRename |
| Cmd + Ctr + ← | ジャンプ前のコードに戻る |
| Cmd + Ctr + → | 進む(上記の逆) |
| Opt + ← | 左の単語にカーソル移動 |
| Opt + →

元記事を表示

OTHERカテゴリの最新記事