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

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

ArcGIS で iOS SDK を使用してみた!

新しくはてなブログを開設しました。今後はこちらを中心に記事を書いていきます。

今回は、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って

元記事を表示

おうち時間にWEBエンジニアがFlutter触ってみた(環境構築)

#はじめに
おはようございます。こんにちは。こんばんは。
今回は **#おうち時間** 家にいても何もすることがないのでFlutterでアプリ作って遊んじゃおう。と思いはじめました。
始める前に環境構築していきましょう。

#Flutterとは
Flutter は、Googleによって開発されたフリーかつオープンソースのモバイルアプリケーションフレームワークである。
FlutterはAndroidやiOS向けのアプリケーションの開発に利用されている。

#今の環境

– macOS: 10.15.4
– Android studio: 3.6.3
– Xcode: 11.4.1

#環境構築
[https://flutter.dev/](https://flutter.dev/)にアクセスして**Get Started**をクリックして下さい。
Flutter_-_Beautiful_native_apps_in_record_time.pngApple Pencilでのメモを気軽にするアプリ「Like a Paper」を個人開発したので大変だったことを共有します

[Like a Paper](https://apps.apple.com/jp/app/like-a-paper/id1511690088#?platform=ipad)という個人開発のiOSアプリをリリースしました???

アプリの概要→使った技術的要素の紹介→開発の中で大変だったこと→開発の中で感じたことの順で書いていきます。
だいぶ長い記事になったので、興味のあるトピックスだけ拾い読みしていただければと思います。

# アプリの概要
まずアプリの概要です。

# なぜつくったか
僕はiPad ProとApple Pencil持ってるんですが、
それはそれとして紙とボールペンでアイディアスケッチしてるときが結構あって、
せっかくApple Pencil持ってんならそういうときもiPadでできるよなあとふと思いました。

純正のメモアプリやEvernoteでも、当然Apple Pencilには対応しているんですが、
なんかパッと思いついたことをラフに書きたいときに使うにしては、ちょっと多機能すぎて気が散ります。

パッとアプリを立ち上げたら、真っ白な画面になって、そこにすぐ書き込め

元記事を表示

SwiftUIで作るシンプルなログイン画面

GW中にSwiftUIで何かアプリを作るという個人目標を立てて、実際に作成した際に得られた知見を共有します。

今回は最低限の見た目のログイン画面の構成を紹介したいと思います。

## 実行環境
– Xcode 11.4.1
– macOS 10.15.4
– iOS 13.4.1

※ 2020年5月段階

## 完成品

App名、 入力フォーム、ログインボタンのシンプルな構成
App名をロゴに変えるなり、行間詰めたりなどはプロパティいじって調整してください

### ライトモード

Simulator Screen Shot - iPhone SE (2nd generation) - 2020-05-06 at 09.36.38.png

### ダークモード

</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>iPhone</div>
<div class='tag-cloud-link'>Xcode</div>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>Swift</div>
<div class='tag-cloud-link'>SwiftUI</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/rymshm/items/c513bc5b805183183624'>元記事を表示</a></div>
<h3 id=CocoaPodsを使う

Swiftでcocoapodsを使う機会があったので、後のために忘備録として。。

##cocoapod のインストール
ターミナルを開き
`$ sudo gem install cocoapods`

##cocoapod をプロジェクトに追加する
`pod init`

##cocoapodに追加するライブラリを追加する
`$ vi Podfile`
で追加するライブラリをファイル内に記入
“`記入例: pod ‘ライブラリ名’“`

`$ pod install`

##インストール時の注意点
ライブラリによっては、warninngが出ることがあるので、バージョン指定がある場合は、必ずpod install前に記入すること。

元記事を表示

NSKeyValueObservationはinvalidateしよう!

## 経緯
`AVPlayer`の`rate`をKVOで監視する実装を行い、`NSKeyValueObservation`はメンバ変数に持たせました。
解放は、`NSKeyValueObservation#invalidate`に下記のコメントがあったため、メンバ変数を持っているクラスの解放に任せることにしました。

invalidate() will be called automatically when an NSKeyValueObservation is deinited

ところが、リリースしてみると、スタックトレースに下記を含むようなクラッシュが多発しました。
開発時やテストフライトでの動作確認も行っておりましたが、再現はできませんでした。

KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED

## 解決
Appleのいうことは信じずに、メンバ変数を持っているクラスの`deinit`で`NSKeyValueObservati

元記事を表示

【Swift】00:00:00表示 pickerを用いたカウントダウンタイマーの実装

##【はじめに】 
ラベルに00:00:00と表示するカウントダウンタイマーで、pickerを用いた実装方法をまとめてみました。
参考になれば幸いです。

##【目次】
・デザイン
・全体コード
・picker画面詳細
・timer画面詳細
・参考サイト
・最後に

##【デザイン】
スクリーンショット 2020-05-05 12.33.45.png
スクリーンショット 2020-05-05 13.00.57.png

##【全体コー

元記事を表示

AppStoreConnectでリジェクトへの返信でファイルアップロードができない問題

#リジェクトされた
今回Flutterで作成したアプリを公開しようと思い申請してみたけど予想通りリジェクトされてしまいました。
バイナリでの却下ということでリジェクト内容は以下でした。
###リジェクト内容

“`
Guideline 5.3.2 – Legal – Gaming, Gambling, and Lotteries

Your app includes a contest or sweepstakes but it does not:

– Indicate that Apple is not involved in any way with the contest or sweepstakes.

Next Steps

It is necessary to:

– Include official rules of the contest or sweepstakes in the app and ensure the rules are available to users at all times.
– Include an explicit statemen

元記事を表示

unrecognized selector sent to instance エラー

![スクリーンショット 2020-05-05 午前8.52.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625048/03b2ffb1-25f4-ee58-b554-8f5b361e8c5a.png)
(こちらで初投稿になります。)
Segueで画面遷移するときに3日もハマったのでメモ。

# 解決策
Segueのidentifierが指定されていなかったのが原因だった。
![スクリーンショット 2020-05-05 午前8.56.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625048/b8d5f412-b02b-56e7-1a99-414401948fdf.png)
identifierを指定すればなおる。
![スクリーンショット 2020-05-05 午前8.58.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

Flutterでストアに提出できるrelease buildを一発で作るシェルスクリプト

タイトルの通り。本当はfastlaneとか使うか迷ったけどまずはこれで当分なんとかできそう。

1, 以下の内容shファイルをプロジェクトルートに作る。

“`shell

#!/bin/bash

echo ‘Build Android Release Resource’
flutter build appbundle –target-platform android-arm,android-arm64,android-x64

echo ”
echo ‘Build iOS Release Resource’
flutter build ios –release

ARCHIVE_PATH=”$PWD/build/ios/Runner.xcarchive”
IPA_PATH=”$PWD/build/ios/Runner.ipa”
xcodebuild -quiet -workspace ios/Runner.xcworkspace -scheme Runner -sdk iphoneos -configuration Release archive -archivePath

元記事を表示

Flutter アップデート(for macOS)

久々にFlutterを起動しようとしたときにアップデートをしたい場合のメモです。

# Flutter アップデート方法

doctor を実行する

“`
$ flutter doctor
“`

実行するとアップデートの通知やIDEのバージョン互換のエラーとか教えてくれます。

“`
╔════════════════════════════════════════════════════════════════════════════╗
║ A new version of Flutter is available! ║
║ ║
║ To update to the latest version, run “flutter upgrade”. ║
╚═════════════════════════

元記事を表示

FlutterでGoogleMapとPersistentBottomsheetを実装した

### 実際の画面
![googlemap_with_persistentbottomsheet.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526878/536fdc79-0b29-f912-70d4-2abff93bb1b9.gif)

### 準備
– GoogleMapAPIを利用可能な状態にする。(android/ios)
– google_maps_flutterのReadmeにしたがってセッティングをする。

### 利用ライブラリ
– google_maps_flutter: ^0.5.27
– https://pub.dev/packages/google_maps_flutter
– sliding_up_panel: ^1.0.2
– https://pub.dev/packages/sliding_up_panel

### 実装

https://github.com/kiriko-rs/day3_point_in_map

GoogleMapのコードに関

元記事を表示

[Swift] UIStackvView inside ScrollView iOS

### 概要
scrollView内にstackViewを配置する時の制約の付け方ですが、、
必ずと言って良いほど毎回忘れてハマるのでサンプルコードを準備しました。
tableViewではカスタム出来ないデザインの画面などでよく使うケースです。(設定画面など)

ポイントはstackViewとScrollViewの「Equal Width」です。

といっても結局忘れるのでXibからviewをコピーしたほうが早いですw

### IB
スクリーンショット 2020-05-04 19.47.57.png

### 結果
Simulator Screen Shot - iPhone SE (2nd generation) - 2020-05-04 at 19.50.50.</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Xcode</div>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>Swift</div>
<div class='tag-cloud-link'>ScrollView</div>
<div class='tag-cloud-link'>StackView</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/menomoto/items/7619a76e0dc45a705cea'>元記事を表示</a></div>
</div>
      </section>
	        
      
      
      
	        <!-- 記事下シェアボタン -->
        <aside>
<ul class=

  • OTHERカテゴリの最新記事