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

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

Swiftで反射神経を鍛えるゲームを作ってみた

#はじめに
はじめまして。初投稿です。
趣味でプログラミングしてて、友人にどうせだったらQiitaとかGithubに公開すればいいのにと言われ、確かにその通りだと思ったのでこれから随時投稿していこうと思います。
よろしくお願いします。

#概要
Swiftで反射神経を鍛えるゲームを作りました。Swiftで初めてちゃんと最後まで作ったアプリなので、結構思い入れがあります。1から10まで小さい数から順番にタップしていくシンプルなゲームです。
プレイ画面はこんな感じ。↓
![game2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/623917/62d6e73a-d716-6f52-67f6-cd9a33702a3e.gif)

#開発環境
・ iOS 13.3.1
・ Xcode 11.3.1

#ソースコード
簡単にソースコードの説明をします。
全部載せるととても長くなってしまうので、スコアシーンなどは割愛します。
全てのコードは[Github](https://github.com/YumaSato-u

元記事を表示

Swift3入門

#はじめに
某プログラミング学習サイトの学習記録を記します。

#共通操作
・Shiftを押しながらクリックで範囲選択になる

#No1
・Xcodeでplaygraoundを新規作成する
・種類はBlankを選ぶ (他にはGame, Map, Single Viewがある)

#No2
・下記について、C言語と同じ
 ・コメント
 ・print関数
 ・文字列を””で囲むこと
 ・文末が;であること
・実行形式の選択は、□または△を長押しすることで変更できる
 短く押すと実行される。
・右ペインに実行結果が表示される

元記事を表示

【Mac不要】開発中のFlutter製アプリをiOSとAndroidに実機配備する手順 – Codemagic編

# はじめに

Flutterはクロスプラットフォーム対応ですので、作成したアプリはiOS, Android両方にリリースすることができます。ところが、WindowsではiOS向けのビルドができません。Macを持っていない人にはつらい事実ですね。そこで、この記事ではCodemagicというサービスを利用してiOS, Android両方にリリースする手順を紹介します。

## 前提

この記事は、以下に当てはまる人向けの iOS/Android 対応アプリを開発する手順を紹介します。

* 開発機はWindowsだ
* **Macを持っていない**
* Flutterで開発したい
* Apple Developer Programに既に登録している、または年間で約12,000円を支払えるクレジットカードまたはデビットカードを持っていて、支払い後に最大48時間待ってやるのも悪くない。※1

※1: 2020/03/25現在。

## 開発環境の前提

* AndroidStudioがインストールされていること(まだの方は、インストールをお願いします)
* Git for windowsが

元記事を表示

【iOS】画面をタップしたらキーボードを閉じる処理を共通化してみる

## はじめに

UIView の `endEditing(_:)` は特定のテキストフィールドによらずにキーボードを閉じる方法として有効です。

次のような実装で、画面のタップでキーボードを閉じることができます。

“`swift
import UIKit

final class ViewController: UIViewController {

@IBOutlet private weak var textField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
view.addGestureRecognizer(UITapGestureRecognizer(
target: self,
action: #selector(endEditing(sender:))))
}

@objc func endEditing(sender: Any) {
view.endE

元記事を表示

NSPersistentCloudKitContainerを導入し、既存のデータをiCloudにアップロードする際のコツ

# NSPersistentCloudKitContainerとは?
[NSPersistentCloudKitContainer](https://developer.apple.com/documentation/coredata/nspersistentcloudkitcontainer)はCoreDataで使用する[NSPersistentContainer](https://developer.apple.com/documentation/coredata/nspersistentcontainer)をCloudKitに対応させたクラスです。
*CoreDataについては[この記事](https://qiita.com/da1ssk/items/3b1b9c11106717a5a935)がわかりやすいです。

従来、CoreDataで扱っているデータをCloudKitにアップロードするためには色々とコードを書く必要がありました。しかし、AppleがWWDC2019で発表したNSPersistentCloudKitContainerを使えば、それが簡単に実現できるようになりま

元記事を表示

【expo】ios,androidのストア公開で詰まったメモ

少し詰まったのでメモします。
基本的なビルドの仕方は、udemyの[React Native で iOS / Android アプリ開発をゼロから始めよう!](https://www.udemy.com/course/react-native-ios-android/)の通りにやればいけると思います。

# ios

## 「Guideline 2.3.8 – Performance – Accurate Metadata」 の対処法

スクリーンショット 2020-05-05 08.35.18.png

Developer Accountで設定したのと同じ名前をapp.jsonに設定する。

“`app.json
“expo”: {
“name”: “多面!フラッシュ暗算”,

“`

元記事を表示

UserDefaultsをProperty Wrapperでカッコよく使う

iOSプログラマなら誰もが3回は作っているUserDefaultsをいい感じに使う方法の解説です。

今回はProperty Wrapperを活用します。目標は以下です。

* あまりコードを書かずに使える
* UserDefaultsで元々使える型も使えない型も同じように使える
* 型安全に使える(キャストせずに済む)
* Optionalも扱う(UserDefaultsの`integer(forKey:)`は値がないときnilではなく0を返してしまう)
* Swift5.1以降対応
* iOS11以降対応

# カッコよく使う例
アプリごとに用意するUserDefaultsアクセス部分の例です。

“`swift
struct User : Codable, UserDefaultCompatible {
var name: String
}

struct Settings {
@UserDefault(“user”, default: User(name: “abc”))
var user: User

@User

元記事を表示

【Xcode】Could not attach pid to XXX というエラーが出る

### :boom: クリーンビルドする
Xcodeを開き左上のメニューから

***・「Product」 → 「Clean Build Folder」***

### :boom: シミュレーターの設定をリセットする
iPhoneシミュレーターを開き左上のメニューから

***・「Hardware」 → 「Erase All Contents And Settings」***

### :boom: 念のためXcode再起動してみる
これらを試してみると私の場合は綺麗に直りました。

元記事を表示

iOSアプリのビルド番号にビルド日時を設定する

# 背景
– これを実施するまでは1ずつインクリメントしていたため、ビルド番号は意味のない数字だった
– 数字で何か意味のあるものでパッと浮かんだのが日時であった
– ビルド番号が日付だとTestFlightにいつアップロードしたものなのか、TestFlightアプリ上のファーストビューで見れる

![300x0w.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122255/55e03f54-0540-1b75-e9a5-510b225ede92.png)

# 実装
1.[Target]->[Edit Scheme…]->[Build]を展開->[Pre-actions]に下記を記述

“`shell
#!/bin/sh

date “+%Y.%m%d.%H%M” >${PROJECT_DIR}/build_number.txt
“`
2.プロジェクトファイルの[TARGETS]からターゲットを選択
3.[Build Phases]タブを選択
4.[+]をクリックし、[New Run Sc

元記事を表示

iOSでCustom URL Scheme活用

iOSでは「cm-app://」という文字列で、またこの文字列のあとにvalueを設定することによって、特定のAppを起動でき、また、特定のvalueによりAppを起動できる。

最近、地震が多いので、頻繁にアクセスするYouTubeの「強振モニタ放送24LIVE」様の「【地震・災害】強震モニタ マルチウィンドウ ライブ(配信地点:長崎 – 24時間放送)*」をiOSのスクリーン上にWeb Appのように設置することを実施した。
* https://www.youtube.com/watch?v=cwPFbQuyvRo

Apple Configurator 2を起動し、

Webクリップ
→ラベル「強振モニタ」(→表示名)
→URL「youtube://cwPFbQuyvRo」

と設定するだけ。これをAirDrop等でiDeviceに送信し、プロファイルをインストールすることで完了。

元記事を表示

【Pythonista3を使ったみた】自作モジュールのインポート

#モジュールって?
モジュールとは、Pythonの定義や文が入ったファイルのことです。
(ファイル名の接尾語に`.py`がついたものです)
以下のファイルもモジュールとして扱えます。

“`python:HelloWorld.py
print( “HelloWorld” )
“`
#インポートって?
例として標準ライブラリの`os`モジュールをインポートする。

“`python:import_test.py
import os
print( type( os ) )
#
print( os.getcwd() )
# /private/var/mobile/Library/Mobile Documents/iCloud~com~omz-software~Pythonista3/Documents/Test

“`
以上のように`import <モジュール名>`とするとインポートできます。
モジュールは`module型`のオブジェクトとしてインポートされます。

#自作モジュールのインポート
**ディレクトリ**
>- iCould

元記事を表示

【Pythonista3を使ったみた】入門

#Pythonista3ってなに?
 **iOS, iPadOS上で動作する統合開発環境(IDE)**です。
 アプリ上でPython開発が出来ちゃう画期的なアプリなんです!

#モジュール作成
 まずは、ファイルを作成します。
 ScriptLibrary > iCloud 内に “Test”フォルダを作成し
 その中に”HelloWorld.py”を作成します。
 
BB37F5A4-4493-4638-A998-37776BE4CF68_1_201_a.jpeg
D6CA011A-F146-47CB-B577-DEB39BC31F18_1_105_c.jpegArcGIS で iOS SDK を使用してみた!

新しくはてなブログを開設しました。今後はこちらを中心に記事を書いていきます。
https://freedom-tech.hatenablog.com/

今回は、ArcGIS の iOS 版の SDK を使用して、住所検索や品川区の観光情報を地図に表示してみました。

最終版のイメージは以下のとおりになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102251/604b951b-789d-922a-526e-7a2a3fddd788.png)

詳細は、こちらのはてなブログに詳しく書いてますので参照して下さい。
[ArcGIS で iOS SDK を使用してみた!](https://freedom-tech.hatenablog.com/entry/2020/05/03/015550)

元記事を表示

Errorをいい感じにUIAlertControllerで表示する

iOSでエラーが起きた場合、UIAlertControllerに表示することは珍しくないですが、その際に発生するErrorを元にしていい感じにUIAlertControllerに表示します。

# 「いい感じ」の定義

https://developer.apple.com/documentation/appkit/nsalert

「いい感じ」の定義としては、macOSで使われているAppKitの`NSAlert`を参考にします。
NSAlertというのはこんな感じのやつです。
messageText.png

NSAlertの中には`messageText`,`informativeText`が表示され、ボタンが存在します。
大体UIAlertControllerの`title`,`message`と同じ形に見え

元記事を表示

「XDプラグインでDart言語自動生成してみた」 ~私文男子の格闘第3話~

#はじめに
(2020/5/6投稿)
オンライン授業にも慣れ、もうずっとオンラインでいいよとすら思っている私文男子です。

本日はいつも私が使っている**Adobe XDから、自動的にコードの生成をする**ということをやっていきたいと思います。

私がモバイルアプリエンジニアを始めようなった時にFlutterを選んだ理由でもあるので、とてもワクワクしながら作業していました。今までプログラム系統を触ったことがなくてもめちゃくちゃ簡単にできてかつ**衝撃が大きい**作業だったので是非ご覧ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629658/c6246f15-19d4-2d68-730d-52966f58b354.png)

#環境紹介
まずは環境紹介からいきましょう。
###私のPC環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629658/8dc99d26-a8f3

元記事を表示

【Swift】コードでViewControllerを生成して画面遷移と値渡しをする方法

# はじめに
Storyboard は画面レイアウトの作成にだけ使用して、
ViewController の初期化と画面遷移はコードでやってしまいたい人向けです。
自分はよくこんな感じにやってます。

# 前準備
## ファイルの構成について
自分は Storyboard と ViewController は1対1になるようにしています。
なので基本的に Storyboard と ViewController の名前は同じにします。

こんな感じの構成です。
**FirstViewController** が遷移元の画面で、**SecondViewController** が遷移先の画面だと思ってください。

| フォルダの構成 |
| :———: |
| スクリーンショット 2020-05-06 20.46.43.pngXcodeは画像データを最適化する

アプリビルド時、pngファイルなどの画像データはそのままコピーされるのではなく最適化されるみたいです。
これはxcassetsなどの管理下のファイルだけかと思っていたのですが、どうも直接プロジェクトのツリーに入れているファイルも適用されるようです。

MacのFinderでは16,511バイトのpngファイルをiOS実機の実装時に下記コードでサイズを測ってみると次のようになりました。

“`swift

let url = Bundle.main.url(forResource: “Image”, withExtension: “png”)!
let data = try! Data(contentsOf: url)
print(data.count) // 94727
“`

拡張子をpngから適当な拡張子(datとかbin)にすれば回避出来ました。

(xcassetsに入れていないと言うことは生ファイルをバンドルしたいのだから勝手に最適化しないで欲しい。)

## 追記

Build Settingsで最適化を無効化したり、Folder Referenceにいれて回避すること

元記事を表示

[Swift] SizeClassの使い方まとめ

この記事では、iOSアプリ開発に関する初心者向けの情報を共有します。
私の認識違いなどがありましたらコメントでお知らせいただけると幸いです。

# SizeClassとは
***一つのストーリーボードファイルに様々な画面サイズと方向のためのユーザーインターフェースレイアウトを設計できるようサポートするクラスです。***

サイズクラスを理解するためには、下図を参考にしてください。
スクリーンショット 2020-05-06 21.38.32.png
スクリーンショット 2020-05-06 21.38.53.pngReactNativeでiosアプリを作るメモ

iOSとAndroid両方のアプリを作れるReactNativeですが、エミュレータ起動の方法とか気をつけるところを忘れてしまっていたので、自分用にメモを残します。

### ReactNative
ご存知かと思いますが、ReactNativeはモバイルアプリケーションフレームワークです。
Reactのような書き方でiOSやAndroidのネイティブアプリを作ることできます。
利点は上記で、欠点は用意されてない端末の機能を使うAPIを自分で用意する必要があるところです。

端末の機能を使うAPIはある程度用意されてますが、マイナーなAPIはAndroidJavaやObjectiveC(SwiftもObjectiveCが必須)を使って自分で書く必要があります。

### エミュレータでアプリを起動
[ドキュメント](https://reactnative.dev/docs/running-on-simulator-ios.html)を読むと、プロジェクトディレクトリで下記のコマンドを実行する

“`
npx react-native run-ios –simulator=”iPhon

元記事を表示

Apple WWDC2020 開催決定 新しいSwift Student Challengeとは

# 今年は新しいSwift Student Challengeが開催
いよいよ5月に入り、WWDC2020まで近づいてきました。
今年は新型コロナウイルス “COVID-19” の影響によりオンラインのWWDCとなることが発表されています。
今回はこのWWDC2020で開催されることとなった**Swift Student Challenge**に焦点を当てて取り上げたいと思います。

##そもそもWWDCとは
WWDCはAppleが毎年開催する世界開発者会議のことで、ここで新型iOSやmacOSをはじめ新しいソフトウェアやハードウェアが発表されます。
今年のWWDCについては先日6月22日に__オンラインで__開催することが決定されています。
>Apple、世界開発者会議を6月22日よりオンラインで開催
https://www.apple.com/jp/newsroom/2020/05/apple-to-host-virtual-worldwide-developers-conference-beginning-june-22/

##Swift Student Challengeって

元記事を表示

OTHERカテゴリの最新記事