- 1. ReactNativeの自動linkがiOSだけ動かなくて困った話
- 2. アプリ未経験の大学生が1ヶ月かけてReactNative(Expo)でiOS/Android対応のアプリを作った話
- 3. AdHocでテスト端末を追加登録する方法
- 4. このFat View Controller、あなたはリファクタリングできますか?
- 5. iOSレイアウト入門
- 6. Google Map SDK for iOSを使って現在位置を表示する
- 7. 【Swift】完全初心者が2ヶ月半でアプリをリリースした開発の流れ
- 8. 最近のiOSのTwitterKit…
- 9. 【Xcode】XcodeでViewのFrameをデバッグで表示!! “Show View Frames”が超便利
- 10. はじめてのTableViewController
- 11. AWSMobileClientのpod installがSWIFT_VERSIONのエラーで止まるときの対応
- 12. iOS 13以上のiPhoneで自前のポップオーバー画面とAirPrint画面を表示すると挙動に差異がある理由
- 13. 【エビデンス資料作成】重要性
- 14. [Online] potatotips #69 iOS/Android開発Tips共有会 備忘録
- 15. Swiftで、Kotlinのdata class の copy() みたいのが欲しい
- 16. iPadでもField Testを開ける
- 17. UIToolBarについて、中のボタンタップ時におけるハイライトが不自然にならないように上部の枠線を消す
- 18. Sign in with Appleの注意点
- 19. UILabelのフォントサイズを自動調整させる(adjustsfontsizetofitwidth)
- 20. iOS対応、スムーズな背景画像の連動。
ReactNativeの自動linkがiOSだけ動かなくて困った話
# 初めに
ReactNativeを0.5xから0.6xにアップデートした際、0.60.0から導入されたライブラリの自動リンク機能がiOSだけ動かなくて困っていた。仕方ないので、
`一旦手動でlink → iOSの差分だけコミット`
としていたのだがさすがに面倒なのでちゃんとした対策は無いものか、と思って調べたらちゃんとあった。# やったこと
`reactnative auto link not working` でググったら、react-native-fsというライブラリの ↓ というissueのコメントが見つかった。
https://github.com/itinance/react-native-fs/issues/708#issuecomment-559785244これに従い、Podfileに `use_native_modules!` の一文を加えたら直った。
https://react-native-community.github.io/upgrade-helper/?from=0.59.9&to=0.61.5↑ の差分を見て、手で必要な分だけ導入してい
アプリ未経験の大学生が1ヶ月かけてReactNative(Expo)でiOS/Android対応のアプリを作った話
先日、「ワセフリ」というアプリをリリースしました。開発期間は約1ヶ月。ReactNativeを使って、iOS/Android両対応しています。
先日、学生が教科書などを交換や売買できるようなフリマアプリ、「ワセフリ」をリリースしました!
開発に着手したのが2020年の3月19日。正式にリリースしたのが4/19日ということで、**まあ大体4週間かかったかな、という感じです。**
言い訳がましいのですが、平日はほぼフルコミットでエンジニアのインターンとして働いてい
AdHocでテスト端末を追加登録する方法
後からテスト端末を追加することはよくある話だと思うのですが、一発でできなかったので手順をメモしておきます
XcodeはVersion11.4.1です## デバイスの登録
Apple Developer上で
・「Certificates,IDs&Profiles」>「Devices」より端末を登録
・「Certificates,IDs&Profiles」>「Profiles」よりAdHoc用のProfileをEditし、登録した端末を追加## プロファイルの再読み込み
Xcode上で
・「Xcode」>「Preferences」から「Accounts」を開く
・「Download Manual Profiles」を押下
![スクリーンショット.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165658/4b67104b-0d76-83ce-8a3c-ebf2b400be90.png)
これでプロファイルが再読み込みされたので、「Product」>「Archive」でIPAファイルを新しく作成して終
この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」や
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**」です。
日々のトレーニング記録をカレンダーにメモをするアプリです。
自分の努力の見返すことで「今月は頑張ったな」「先月サボったから頑張ろう」と思う。
継続してトレーニングに取り組めると思い制作しました。
最近の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が表示されるようになります。
xcodeにframe表示させる機能あるの知らなかった、、、
いつからあったの、、、 はじめてのTableViewController
##はじめに
これまでTableViewControllerを雰囲気で扱ってきたので自分用にまとめます。
手順に飛躍がないよう心がけています。##Storyboradから作成(直感的でわかりやすい)
ほとんど画像の通りです。
これで実行すると、画面いっぱいにセルが広がっているのではないでしょうか。
AWSMobileClientのpod installがSWIFT_VERSIONのエラーで止まるときの対応
# AWSMobileClientがインストールできない
新しくiOSアプリを作る場合にはまずあり得ないと思いますが、古いアプリの改修などの場合はコードが全てObjective-Cで書かれているケースも珍しくないと思います。今回、そういうケースでAWSMobileClientがインストールできないという現象に遭遇したので記録しておきます。
## つまり、どういうことかというと
* Objective-Cだけで書かれたiOSアプリにAWSMobileClientをpod installしようとすると失敗します。
* Bridging Headerを生成してあげましょう。
* ダミーのSwiftファイルを作成するだけで、Xcodeが自動生成してくれます。—
以下、詳細です。
## 発生した現象
Cocoapodsを使ってAWSMobileClientをインストールしようとすると*Unable to determine Swift version*エラーになる。
### Podfile
“`sh
$ cat Podfile
# Uncomment the nextiOS 13以上のiPhoneで自前のポップオーバー画面とAirPrint画面を表示すると挙動に差異がある理由
iOS 13以上のiPhoneから、ポップオーバー画面のデフォルトのスタイルが、全画面表示から疑似全画面表示(公式な名称が見つけられなかったので、仮でこのように読んでおく)に変更されている
それらの具体的な違いは以下の通りである
| 挙動 | 全画面表示(~iOS 12) | 疑似全画面表示(iOS 13~) |
|:–|:–|:–|
| 表示サイズ | 全画面表示 | 上部に隙間が空いた状態でほぼ全画面表示 |
| 閉じ方 | アプリ側で制御のみ | アプリ側で制御、あるいは、**ユーザーが画面全体を下にスワイプ** |この際、自前で用意したポップオーバーと、OSが用意してくれているプリント画面では微妙に表示に差異があったため、その理由と差異をなくす方法をメモしておく
# 差異の詳細
以下のような、自作ポップオーバー画面を表示するボタンと、プリント画面を表示するボタンを持つサンプルアプリで挙動を確認する
“`ViewController.swift
import UIKit
import WebKitclass ViewController: UIViewC
【エビデンス資料作成】重要性
#はじめに
エビデンス作成しておいてくださいって言われて、あ、またまとめてやらないと、、、
バージョンアップ対応すると色々と画面が崩れてしまう、、、どうしよう、、、超めんどくさいってなっている人に色々とアドバイスできるように記事にまとめておきます。
エビデンスとは証拠となる画像などを残すことです。
### エビデンスの意味
お客様に資料を作成して、今このような状態ですよ。
運用の信用を得るためには、必要なことではあります。様々な意味があるとは思います。
特に、バージョンアップなどを行う際は、変更箇所が多くなり、アプリ全体の画像を取る必要があります。
ではどのようにしていくと良いのでしょうか?
## 手法は以下の通り
・動画で撮る
・画像(スクショで撮る)
・テスターさんに任せる
・テスターの会社に任せる## マンパワーで、エビデンス作業を行う。
エビデンスを撮るぞと頑張る!!と決めたらひたすら撮ると言う手法がマンパワーですね。
一生懸命、画面の不具合を洗いざらい出す場合には有効かも知れません。
今の現状を知ることができる最終段階として、良いかも知れません##
[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 UIKitclass 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