iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

2021-05-01から1ヶ月間の記事一覧

【React】Parsing error: JSX expressions must have one parent elementというのに出くわした

最近React入門したので、Webフロント周りも記事にしていこうと思います👷‍♀️ 結論 JSXで下記のようなものを書いてたら、エラーに出くわした。 public render() { return ( <div> hoge </div> <div> hoge </div> ) } Parsing error: JSX expressions must have one parent element ど…

【30C】なんとなく使っていたCloud Functionsをちゃんと調べてみた Part1

Cloud Functionsとは? Cloud Functionsは、Firebaseプロジェクトのデータベース(Realmtime Database or Firestore)でのイベントやHTTPSリクエストなどをトリガーにバックエンドのコードを自動的に実行するための機能です。また、トラフィックが増えた場合に…

【Firebase】Next.jsをCloudFunctionsでホストさせる

next.jsにサンプルがあるので、これを使っていきます! github.com まずは、サンプルをインストールします。ちなみにAPP-NAMEは、よしなに変えてください。今回はnpmで作業します。ちなみにyarnがない場合は、yarnpkg install has failed.的なエラーが出るの…

【RxSwift】ScrollViewのContentSizeの変更通知を受け取る

結論 下記のようにKVOでcontentSizeを取得することができます。ちなみにこの状態で返る値はObservable<CGSize?>になります。 scrollView.rx.observe(CGSize.self, "contentSize") // Observable<CGSize?> 今回は、heightのみでいいのと、アンラップした状態で値をリッスンした</cgsize?></cgsize?>…

【Swift】StackViewの乗ったXib(UIView)でSelf-Sizingしたい

結論 そのまま、取得したViewのsystemLayoutSizeFittingで、StackViewのAutoLayoutが反映されると思ったら、そんなことはなかった。 let v = CustomeView.instantiate() v.frame = .init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: v.systemLa…

【Android】グリッドレイアウトのスペースを均等にする

### 結論 まずはItemDecorationのサブクラスを作成。getItemOffsetsメソッドで、それぞれのItemのオフセットをポジションなどによって調整します。 class GridSpacingItemDecoration( private val spanCount: Int, private val spacing: Int, private val in…

【30C】Firebase Dynamic Links について調べる

本日から30Cと題して、30分で使ったことのない技術について超ざっくりとキャッチアップする連載をして行きたいと思います‍ ということで、1回目は 「Firebase Dynamic Links」 から!実際に使ってみたら、また記事にします。 そもそもディープリンクとは? …

【iOS】ScrollViewのトップに謎の余白が現れる

結論 iOS11からScrollViewの領域がsafeArea分の余白がデフォルトで追加されます。(完全に忘れてた) 結論から言うと、この余白を追加しないようにするためにはcontentInsetAdjustmentBehaviorで.neverを選択します。 scrollView.contentInsetAdjustmentBeha…

【iOS】The number of provided view controllers xxx doesn’t match the number required xxx for the requested spine location 対処法

久しぶりに、UIPageViewControllerを使ってたらうっかりミスに悩まされたので、後世に記事を残しておきます‍♀️ 結論 おそらく、あなたがそのエラーになっているのは、setViewControllersで複数のViewControllerを設定しているからでしょう。` setViewControl…

【iOS】InterfaceBuilderでCornerRadiusを設定する

iOS

本日もiOS初学者向けのTipsです‍♀️ 結論 User defined runtime attributesでlayer.cornerRadius項目を設定することで、コードベースからでなく、Interface BuilderからcornerRadiusを変更できるようになります。 ちなみにIBInspectableで下記のようにプロパ…

【Android】iOSのUICollectionViewみたいなレイアウトを作りたい

iOSのUICollectionViewのようなグリッドレイアウトをAndroidでどのように作るのか分からなかったので簡単にメモを‍♀️ 結論 RecyclerViewを使って、グリッドレイアウトを構築できるようです。 ということで、早速使ってみます。 まずは、Fragment内にRecycler…

【npm】npm ERR! code ENOSELFの対処法

npm

npm初心者なのでエラーをメモしておきます 今回npm install実行時に発生したのは下記のようなエラー。 npm ERR! code ENOSELF npm ERR! Refusing to install package with name "react-router" under a package npm ERR! also called "react-router". Did yo…

【Android】RecyclerViewのContentInsetはどこで設定する?

結論 iOSのUIScrollViewや、それを継承したクラスなどではお馴染みの、コンテンツの上下左右のスタート地点のスペースを設定するcontentInsetは、Androidではpaddingになります。 ですので、RecyclerViewのTopの開始地点を60dpずらしたいと思った場合は下記…

【Android】アスペクト比で制約を指定する

結論 まず、前提としてアスペクト比で制約を追加したいものはLinearLayoutなどではなく、ConstraintLayoutで内包する必要があります。 あとはlayout_constraintDimensionRatioでアスペクト比を設定すれば完了です。アスペクト比の指定は"幅:高さ"の順番です…

【Figma】特定のフレームをシェアする

Figmaで特定のFrameをシェアする方法が分からなかったのでメモしておきます 結論 Frameを選択した状態で、右上のShareボタンをクリックすることで、特定のFrameを指定してファイルをシェアできるようです。 てな感じで本日も以上となります その他の記事 yam…

【Swift】Viewの制約に基づいたサイズを取得

結論 下記のようにして、AutoLayoutの制約などに基づいたViewのサイズを取得することができます。 ちなみにUIView.layoutFittingCompressedSizeは、UIViewのクラスプロパティで、可能な限りサイズを小さいサイズを返します。ここでは、制約内で最も小さくな…

【iOS】Signpostsでとりあえず計測をしてみる

Signpostsでとりあえず、メソッドの計測をしたので、本日はそのメモです‍♀️ やっていく まずは、計測するために必要なモジュールをインポートします。 import os.signpost 次に、計測したいメソッドを下記のようにマーキングします。今回はbind()というメソ…

【Android】TextViewを1行表示にする

結論 レイアウトファイルにて、android:singleLine属性をtrueに設定することで、テキストを折り返さず、省略した表示になります。 android:singleLine="true" ちなみに、デフォルトだとこんな感じで、iOSのUILabelの省略形式と同じ感じになります。 省略方法…

【Android】Buttonの影を消す

結論 before after Buttonのスタイルにstyle="?android:attr/borderlessButtonStyle"を設定することで、Buttonの影を消せるようです✍️ style="?android:attr/borderlessButtonStyle" 参考 https://www.ithack.info/button-7/ その他の記事 yamato8010.hatena…

【RxKotlin】ストリームでError発生時に処理を実行する

結論 RxKotlinの場合はdoOnErro()オペレータを使って、ストリームにErrorが流れた時をトリガーに処理を実行することができます。下記の例では、Firebase上でユーザを作成する際に、Errorハンドリングとして、AuthのcurrentUserを削除するようにしています。 …

【Kotlin】複数の型を返したい

〇〇の処理をした時に、AとBの異なる型の値を返したい!という時ありますよね。Swiftでは下記のように、シンプルにタプルで返せば良かったのですが、Kotlinではこの書き方ができなかったのでメモしておきます‍♀️ func hoge() -> (Int, String) { return (1, …

【Kotlin】引数ごとにdata classのコンストラクターを使い分けたい

結論 Kotlinでは下記のように、constructor()キーワードを使うことで、セカンダリーコンストラクターとして、引数に応じてClassを初期化することができるようです。Swiftでは、init()で初期化方法を分けることができましたよね override var instagram: Stri…

【Android】Firestoreでバッチ書き込みを行う

本日は、Firestoreの不可分操作の一つである、バッチ書き込みを使ってみたいと思います‍♀️ 不可分操作(アトミックオペレーション)は、複数の操作を一つの操作として扱うことで、全ての操作が成功、又は失敗するように処理を行うことを指します。Firestoreで…

【App Store】アプリのアイコン付きQRコードを取得する

App Store Marketing Toolsで、QRコードを取得したいアプリを探します。 tools.applemediaservices.com ちなみに、下記のようにApple IDを指定したリンクでも遷移できます。 > https://tools.applemediaservices.com/app/{Apple ID} QRコードセクションで、…

【Kotlin】Unitとは

Unitとは? Javaのvoidに対応する、Kotlinのオブジェクトのようです。 The type with only one value: the Unit object. This type corresponds to the void type in Java. つまり、下記のような戻り値のない関数などは、Kotlinではvoidではなく、Unitが返さ…

【Kotlin】複数の変数をアンラップする

結論 Swiftだとguardがあるので、下記のようにオプショナル値をアンラップできます。 guard let a = optionalA, let b = optionalB, let c = optionalC else { return } Kotlinの場合は、下記のようなメソッドを作ることで、Swiftのguard let else的なことを…

【RxSwift】イベントをenumに変える便利なオペレータがあった

イベントをenumに変える便利なオペレータがあったことを最近知ったので、メモしておきます👷‍♀️ reactivex.io .materialize() .materialize()は、ストリームに流れる各イベントを、それぞれEventというenumに変換します。 @frozen public enum Event<Element> { /// Nex</element>…

KotlinでとりあえずUnitTest

今回はとりあえずKotlinでUnitTestをするための爆速記事です。 結論 とりあえず、UnitTestを行うために下記をGradleファイルに追加します。 testImplementation 'junit:junit:4.12' testImplementation 'androidx.test:core:1.0.0' testImplementation 'org.…

【Apple】Sign in with Appleで謎のリジェクトをされた

認証でSign in with Appleを使っているアプリを申請したら、下記のようなリジェクトをされました。 We discovered one or more bugs in your app. Specifically, the app displayed an error message when e attempted to sign in with Apple. ちなみに、下…

【Apple】App Store Connectで以前のリジェクト内容を確認する

App Store Connectのページから、リジェクトが発生していない場合に、問題解決センターに遷移する方法がわからなかったのでメモしておきます‍♀️ 結論 App Store Connectのページから、UI上から遷移することはできませんでしたが、Apple Developer Account に…