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

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

このFat View Controller、あなたはリファクタリングできますか?

![screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47085/f252954e-5969-fe5a-0873-ecfad88f15ca.png)

iOS アプリ開発において、 Fat View Controller はよく知られたアンチパターンです。 iOS アプリ開発では View Controller が大元にあるので、 View Controller になんでもかんでも実装していると、どんどん View Controller が肥大化してしまいます。

Fat View Controller には、たとえば次のような問題があります。

– UI とロジックが分離されておらずテストしづらい。
– コードの見通しが悪く、可読性が悪い。
– 状態管理が複雑になり、修正時の影響範囲を見通しづらい。
– みんなで同じファイルを触ることになり、コンフリクトが起こりやすい。

そんな Fat View Controller との戦い方の知見を共有し合うために、[たくさんのiOSエンジニア

元記事を表示

iOSレイアウト入門

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

#共通事項など
・Command 0 で左ペインの表示/非表示を切換え
・Preview画面でダブルクリックすると倍率が自動調整。ピンチで手動調整。

#No1
・XcodeではAuto LayoutやTraitが用意されており、複数の画面サイズに対応したアプリのレイアウト作成が可能である。
・Xcodeで新しいアプリを作成する
 ・Single View App
 ・Devices:Universal

#No2
・main.storyboardを選択して左ペインは非表示にする
・右ペイン(ユーティリティエリア)の下記二つにチェックが入っていることを確認
 ・Use Auto Layout
 ・Use Trait Variations
・Editor > Previewでプレビュー表示する
 ・左下の[+]からiPadを追加してiPhoneとiPadの両方を表示させる

#No3
・Viewなどの部品を追加した後、画面下の「Add New Alighment Constraints」や「Add New Constrain

元記事を表示

Google Map SDK for iOSを使って現在位置を表示する

# はじめに
GoogleMap SDK for iOSを利用して現在地をアプリ上に表示する方法については、[公式ドキュメント](https://developers.google.com/maps/documentation/ios-sdk/current-place-tutorial)を含めいくつか[記事](https://qiita.com/koogawa/items/adc2dd19015586bda39b)が存在しますが、どれもなぜかうまく動かなかったので、私の環境(Swift5・xcode11)で動いたコードを共有します。

なおコード全体は[こちら](https://github.com/MasatoraAtarashi/googlemap-sample-ios)で見れます。

# SDKをインストール

“`ruby:Podfile
source ‘https://github.com/CocoaPods/Specs.git’
target ‘YOUR_APPLICATION_TARGET_NAME_HERE’ do
pod ‘GoogleMaps’
p

元記事を表示

【Swift】完全初心者が2ヶ月半でアプリをリリースした開発の流れ

#対象者
・Swift初心者の方
・iOSアプリ開発に挑戦したいと思っている方

#はじめに
サービス業の仕事をしているプログラミング完全初心者の私が**2ヶ月半**でAppStoreにリリースすることができました。
これからiOSアプリを開発に挑戦したいという人の参考になればと思いリリースまでの流れ、大変だった点をまとめました。

#アプリ紹介

私が開発したのは筋トレ記録アプリ「**Workout Manager**」です。

日々のトレーニング記録をカレンダーにメモをするアプリです。
自分の努力の見返すことで「今月は頑張ったな」「先月サボったから頑張ろう」と思う。
継続してトレーニングに取り組めると思い制作しました。

1057 PM.jpegpng.jpeg

元記事を表示

最近のiOSのTwitterKit…

最近は、公式TwitterKitを使ってる人は、もう少ないでしょう。
https://github.com/twitter-archive/twitter-kit-ios

既存アプリのメンテナンスのためにTwitterKitをいじったので雑感など。
(結局のところアプリから削除しましたが)


TwitterKitを利用したアプリをアップデートすると二点問題がありまして、

1.UIWebViewが使われているため、今後アップデートできなくなる

【iOS】UIWebViewのDeprecated対応期限は既存アプリは2020年12月まで、新規アプリは2020年4月まで


【iOS】UIWebViewのDeprecated対応期限は既存アプリは2020年12月まで、新規アプリは2020年4月まで

2.TwitterKitが位置情報を含むので位置情報を使うセキュリティの設定をしなくてはならなくなった。
位置情報は使ってないので今まで通りにApp store connectにアーカイブをsubmitすると以下のエラーになります。

– Your app’s code references one or more A

元記事を表示

【Xcode】XcodeでViewのFrameをデバッグで表示!! “Show View Frames”が超便利

## XcodeのDebugタブにあるShow View Frames

以下をクリックすると、、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/d242d8f8-ded5-807f-2a86-5b9f74d5364c.png)

下記の画像、動画のように各コンポーネントのframeが表示されるようになります。

IMG_CAB45806F13E-1.jpeg

【エビデンス資料作成】重要性

#はじめに
エビデンス作成しておいてくださいって言われて、あ、またまとめてやらないと、、、
バージョンアップ対応すると色々と画面が崩れてしまう、、、どうしよう、、、超めんどくさい

ってなっている人に色々とアドバイスできるように記事にまとめておきます。

エビデンスとは証拠となる画像などを残すことです。

### エビデンスの意味
お客様に資料を作成して、今このような状態ですよ。
運用の信用を得るためには、必要なことではあります。

様々な意味があるとは思います。

特に、バージョンアップなどを行う際は、変更箇所が多くなり、アプリ全体の画像を取る必要があります。

ではどのようにしていくと良いのでしょうか?

## 手法は以下の通り
・動画で撮る
・画像(スクショで撮る)
・テスターさんに任せる
・テスターの会社に任せる

## マンパワーで、エビデンス作業を行う。

エビデンスを撮るぞと頑張る!!と決めたらひたすら撮ると言う手法がマンパワーですね。
一生懸命、画面の不具合を洗いざらい出す場合には有効かも知れません。
今の現状を知ることができる最終段階として、良いかも知れません

##

元記事を表示

[Online] potatotips #69 iOS/Android開発Tips共有会 備忘録

# はじめに
補欠から繰り上がり、[[Online] potatotips #69 iOS/Android開発Tips共有会](https://potatotips.connpass.com/event/171532/)に参加できたので、備忘録を残します。

connpass のイベントページにも記載がありますが、
[github](https://github.com/potatotips/potatotips/wiki/potatotips-69)で今までのイベントのテーマや資料を管理していて、取り組みもとても参考になります。

# 各発表に対する感想
どれも面白い発表でしたが、今回は自分がメインで聞いていたテーマに絞ります:bow:

ML Kit (Auto ML Vison Edge)で写真から家族を検出する

[ブログ(スライドは末尾)](https://techblog.timers-inc.com/entry/2020/04/24/143803)

**やりたいこと**

– 写真アプリで家族を検出できるようにする(今回は、大人・子供・猫・犬の区別)
– 使ったのは

元記事を表示

Swiftで、Kotlinのdata class の copy() みたいのが欲しい

Swift と Kotlin を行ったり来たりして開発していると、うーってなることが結構あります。

そんな中で、似ていて違ってうわってなるのが Kotlin の `data class` で暗黙に生成される `copy()` メソッドが Swift では生成されないことです。

ただ、コメントで指摘を受けて気付きましたが、Swift的には `data class` 的に `struct` を使用する時は、プロパティは var で定義すれば、 let が伝播してくので不変になりますね。

そうなるとこの実装の役立つタイミングは、変更できない、例えばライブラリやモジュールの構造体を扱いたい時とかの限定的な場面だけになりそうです。

実装してみたところ、結構うまくいったので、共有します。

実装したいことは、「引数で指定したプロパティだけ変更して、他の項目は元と同じ別の struct を入手したい」です。

“`swift
struct Bean {
let weight: Double
let size: Double?
let name: String?

元記事を表示

iPadでもField Testを開ける

「ショートカット」アプリからFTMInternal-4を指定するとiPadでもField Testが開ける

# 背景・課題

楽天モバイル(MNO)は、**自社(楽天)回線であれば**、データ使用量が**無制限(10GB/day)**であるRakuten UN-LIMITプランを提供しています。

**iPhoneであれば**、`*3001#12345#*`ダイアルして**Field Testを開けば**、パートナー(au)回線であるか自社回線であるかを**判別できる**ことが知られています。一方、**iPadは**、データ通信専用であるため、そもそも**ダイアルが不可能**です。

そのため、回線を判別するには、ダイアルを迂回してField Testを開く必要があります。

# 手法
**脱獄不要**。iOS標準で同梱される**「ショートカット」アプリのみ**を使います。

▼次のショートカットを使用します。
https://www.icloud.com/shortcuts/dbf53f0c94f44ec09d5f0ab150f6e9e3

単に、アプリは存在するので直に指定すれば

元記事を表示

UIToolBarについて、中のボタンタップ時におけるハイライトが不自然にならないように上部の枠線を消す

非常にニッチだが、割と時間がかかったためメモしておく

# やりたいこと
以下のUIToolBarを作る

– ボタンに CustomView でボタンを利用し、ボタンのハイライトをONにする
– 背景に独自画像を設定する
– 上部の枠線は表示したくない

以下がベースのコード
ここで指定している`product_color.png`は1×1サイズの単色画像である

“`swift
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

// イメージカラーの画像を読み込む
let productColorImage = UIImage(named: “product_color.png”)!

// UIViewController の背景をイメージカラーの画像に設定
self.view.backgroundColor = UIColor(patternImage: p

元記事を表示

Sign in with Appleの注意点

# Sign In with Apple
実装は、公式サンプルコードを参照すれば比較的容易です。

[「Appleでサインイン」によるユーザー認証の実装](https://developer.apple.com/jp/documentation/authenticationservices/implementing_user_authentication_with_sign_in_with_apple/)

# 注意点
何処かに記載があるのかもしれませんが、下記コード(公式サイトより引用)内のgetCredentialState()は、現時点のシミュレータ(version 11.4.1)では常に.notFoundを返すようです。動作確認は実機で実行する必要があります。

最初シミュレータでも.authorizedが返ってきていて、試行錯誤しているうちに動かなくなったように見えたのですが、[このやり取りを読むと](https://github.com/invertase/react-native-apple-authentication/issues/9)勘違いのようです。

“`sw

元記事を表示

UILabelのフォントサイズを自動調整させる(adjustsfontsizetofitwidth)

[`adjustsFontSizeToFitWidth`](https://developer.apple.com/documentation/uikit/uilabel/1620546-adjustsfontsizetofitwidth)というプロパティがあるので、それをtrueにすると、
自動調整が効きます。

# adjustsfontsizetofitwidthしてみよう
“`swift
import UIKit

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel(frame: CGRect(x: view.center.x – 50, y: view.center.y – 7.5, width: 100, height: 15))
lable.text = “12345678901234567891”
label.font =

元記事を表示

iOS対応、スムーズな背景画像の連動。

こんにちは、絶賛24時間プログラミング中のasuchi0819です。
(んなわけない

ちょっと所要にて、背景画像をスクロールしても動かしたくない実装をしなければならなかったので、その覚書です。

まず、iOSでは背景画像の`cover`時に`background-attachment:fixed;`を指定することはできません。
そこで、`:berofe`に背景画像として設定すればよいです。
しかし、ここで少し落とし穴があるのでコードを見てください。

“`CSS
body:before{
content:””;
display:block;
position:fixed;
bottom:0;
left:0;
z-index:-1;
width:100%;
height:100vh;
overflow:hidden;
background: url() center no-repeat;
background-size:cover;
}
“`

多くのコードでは、
`bottom: 0;`が`top: 0;`や、`overflow: hi

元記事を表示

Unityのモバイルゲーム向けクラッキングが行われるポイントを整理してみた

#免責事項

**この記事に記載されている内容を、実際に試して発生した損害に対していかなる責任も負いません(補償しません)。**
**すべて自己責任のもとで行ってください。**

リリースされているアプリやゲーム、[ソフトウェア利用許諾契約(EULA)](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%88%A9%E7%94%A8%E8%A8%B1%E8%AB%BE%E5%A5%91%E7%B4%84#%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0)やアプリケーション利用規約などでリバースエンジニアリングは禁止されています。
実際に試す場合は、自分で開発しているアプリやゲームや脆弱性確認用でリリースされているアプリやゲームを使いましょう。

勘違いして理解しており、誤ったことを記載しているとこ

元記事を表示

[Swift5]Realm Swift – サンプル#2

iOS で`Realm Swift` を 利用し、サンプルを作成してみました。

# 前回
[Realm Swift – クラス#1](https://qiita.com/mario7/items/2df2c3e172f15f1d07cb)
# サンプル
※ Source: [RealmManagerAccess.swift](https://github.com/mario7/studyForiOS/blob/realmJsonSample/realmAndJsonSample/realm/RealmManagerAccess.swift)

##Ream 定義

“`RealmManagerAccess.swift
import RealmSwift
class Student: Object, Codable, NSCopying {
@objc dynamic var studentId = “”
@objc dynamic var name = “”
@objc dynamic var age = 0

override stat

元記事を表示

iOS でアプリを公開しようとしたらアカウント調査中を理由に何故かリジェクトされる→通った!

##概要
一ヶ月ほど前に、開発したアプリをApp Store Connect に提出したのですが、「アカウントを調査中だよ。調査が終わるまで何もせず待っててね(意訳)」とだけ言われてリジェクトされてしまいました。

しかし、先日ようやく審査が行われ、無事アプリの状態が「配信準備完了」になりました!
同様の問題に悩まされている方がおられるかもしれないので、ここまでの流れを時系列順に記述しておきます。

##時系列

3/13 アプリを申請する。(一回目)

3/14 上記の理由でリジェクトされる。

3/18 BundleID を変えて再び申請。

3/19 同様の理由で無事リジェクト。

〜調査が終わるのを期待してしばらく放置〜

4/23 一ヶ月以上が経過し、流石に何も音沙汰ないことに焦れて問い合わせる。

4/24 Apple から返信。「調査はまだ進行中だよ」と言われる。

4/25 明朝 アプリの状態が「審査中」になる!

4/25 夜 アプリが審査に通り、「配信準備完了」になる!!

##リジェクトの詳細
以下に Apple から受け取った却下理由を掲載しておきます。

元記事を表示

OTHERカテゴリの最新記事