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

iOS関連のことを調べてみた2020年01月21日
目次

UIAlertController の title と message のパターン

毎回 title と message のどっちを設定するとどうなるかを忘れるので表にしてみました

style = actionSheet のときに `title あり/message = nil` と `title = nil/message あり` のパターンで後者の方がフォントが太くなるあたりが見どころです

## UIAlertController.Style.alert

| | not empty message | empty message | nil message |
|:-:|:-:|:-:|:-:|
| not empty title |![alertTextText](https://raw.githubusercontent.com/funnything/AlertPattern/master/outputs/alertTextText.png)|![alertTextEmpty](https://raw.githubusercontent.com/funnything/AlertPattern/master/outputs/alertTextEmpty.p

元記事を表示

UITableViewでセルを選択不可にする方法

## 環境

swift 5
xcode 11.3

2020年1月20日現在

## 動機

簡単なのですが、すぐに忘れてしまうので。

メモメモ

## 方法

selectionがNoneになっていれば選択することができなくなります。

![スクリーンショット 2020-01-20 21.35.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270808/f03b0929-a6fc-48bf-f0b8-5bb4a9ddaf73.png)

![スクリーンショット 2020-01-20 21.35.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270808/0ad2fec8-8581-53b7-516d-9ad5a3c5edbe.png)

## コードだと

コードだと以下のように書くようです。

“`swift
self.tableView.allowsSelection = false
“`

元記事を表示

signin with apple 実装するときの注意点まとめ

# 対応バージョン

iOS13以上、iOS13以下は対応しないため、別々のデザイン準備する必要があります。

# 取得できるユーザーデータ

– email
– ユーザーの選択でランダム生成されたメール渡せる可能性があります
– full name
– ユーザーの編集可能で、apple id登録された名前とは限らない

https://developer.apple.com/documentation/authenticationservices/asauthorizationappleidcredential?language=objc

# sign in 初回と2回目の違い

sign in 初回はメールと名前のユーザーデータ取れますが、その以後sign inする場合は取得できなくなります。
初回取得成功後key chainなどに保存し、登録成功後削除したほうが一番無難。

“` swift
let request = ASAuthorizationAppleIDProvider().createRequest()
request.reques

元記事を表示

Googleで検索結果に戻ったときの「他の人はこちらも検索」を非表示にする方法

Google の検索結果に戻ってきたとき、リンクの下に “他の人はこちらも検索” と表示されてリンクが動いてしまうのを防ぐ方法です。Chrome, Brave, Firefox, Safari に対応しています。ただしモバイル版では制約上不可能なようです。
ちなみに英語版では “People also search for” と表示されるようです。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155587/3a764b58-6f9f-f69e-6aa5-9f65175b397d.png)

# Chrome / Brave
以下の拡張機能を追加するだけです。
[No Search For – Chrome ウェブストア
https://chrome.google.com/webstore/detail/no-search-for/gfilnngoaebchcnkmppbnijaakeccdjc](https://chrome.google.com/webstore/detail/no-search-fo

元記事を表示

Swift で 画像 (UIImage ) の リサイズ と トリミング (切り抜き) を一度の処理で行う。

# 0.はじめに

Swift で画像の切り抜きとリサイズを一度の処理で行いたかったので、やってみました。

以下の記事を参考にさせて頂きました。

* [UIImageのリサイズ方法と注意点 \- Qiita](https://qiita.com/ruwatana/items/473c1fb6fc889215fca3)
* [【Swift4】UIImageで画像のサイズ変更、指定した倍率で拡大/縮小 \- Qiita](https://qiita.com/zlq4863947/items/4b016824cf152bc2a769)
* [Swift3\.0で画像の切り抜き \- Qiita](https://qiita.com/takabosoft/items/391b7593f0b9ef7d77a5)
* [\[Swift\] 画像のサムネイル生成(縮小&切り抜き) \- Qiita](https://qiita.com/taku/items/fb44d0bf10509d977bc0)

感謝 ♪♪♪

?‍♂️?‍♂️?‍♂️

# 1.コード

今回は、画像を 0.5 倍にリサ

元記事を表示

CustomCellに置いたButtonの選択状態によってTableViewの処理を変える

タップしたButtonが乗ってるCellの情報をFirestoreに保存したい。
その想いから、こんなややこしい(?)記述方法になってしまいました。ご了承下さい。
Firestoreの部分は他記事にDelegate!
#開発環境
・Xcode 11.3
・Swift 5.0
#UIButtonのextensionを作る
“`swift:CustomCell.swift
extension FaveButton {
func switchAction(onAction: @escaping ()->Void, offAction: @escaping ()->Void) {
switch self.isSelected {
case true:
//ONにする時に走らせたい処理
onAction()
case false:
//OFFにする時に走らせたい処理
offAction()
}
}
}
“`

#But

元記事を表示

[Swift] IntやDoubleなどの数字オブジェクトを2倍にする関数でジェネリクスを使ってみた

# 概要

業務でInt型やDouble型を単純に2倍する関数を作りたい時に戸惑いましたのでググってみました。

“`swift

/// これを型ごとに作ると、関数が増えてしまって冗長なので書きたくない
func multipleValue(_ value: Int) -> Int {
return value * 2
}

func multipleValue(_ value: Double) -> Double {
return value * 2
}

func multipleValue(_ value: CGFloat) -> CGFloat {
return value * 2
}

multipleValue(2) // 4
multipleValue(3.14) // 6.28
}
“`

これをクールに一つの関数にまとめたいと思いました。
さてどうすればいいのかを考えるのが今回のテーマです。

## ジェネリクスを使う

すぐに

元記事を表示

React Native体験入学【環境構築】【標準コンポーネントの使い方】【リリースまで】

最近までNext.jsの入門してブログシステム作ってたけど、どうもwebpack周りで詰んでしまったのでもう少し実戦練習できることをやってみようと思ってReact Nativeを始めることに。あまりNext.jsに向いてないブログシステム作るより、ガッツリReact使いまくるアプリ制作でコーディングしまくりたい。

とりあえずReact Nativeの基本情報と、環境構築、ドキュメントやリファレンスの流し読み、そして簡単なアプリを作ってみようと思う。予定は簡単な「ダイス」アプリ。できればリリースするところまで経験しておきたい。

##目次(暫定)

1. **環境構築**
1. React Nativeとは(クロスプラットフォーム開発環境)
1. Reactとは(UI構築のためのJSライブラリ)
1. Expoとは(OSに依存しないビルド環境)
1. 統合開発環境
2. Xcode
3. Android Studio
1. 開発ツールのインストール
2. Homebrew
3. No

元記事を表示

【Swift】UICollectionViewCompositionalLayoutを使って数種類のカスタムレイアウトを実装してみる

# はじめに
WWDC2019で新たに発表された、UICollectionViewのレイアウト手法である**UICollectionViewCompositionalLayout**を使っていくつかカスタムレイアウトを作ってみました。
※ iOS13以降の環境にて、今回作成したサンプルを動かせます

# UICollectionViewCompositionalLayoutとは
詳細については、WWDCのセッションを参考にして頂ければと思いますが、ざっくり言うと、

– iOS13から**UICollectionViewCompositionalLayout**が登場したことで、**UICollectionViewFlowLayout**や**UICollectionViewDelegateFlowLayout**に加えて、UICollectionViewのレイアウトを定義する方法が1つ増えた。
– iOS13から**UICollectionViewDiffableDataSource**が登場したことで、**UICollectionViewDataSource**を準拠して行なってい

元記事を表示

FirebaseのRemoteConfigを使ってキャンペーンのようなモーダルを表示させたい[RemoteConfig応用編]

##最初に
このQiita記事は、RemoteConfig初級編の応用編として書かれているため、[RemoteConfig初級編](https://qiita.com/mototaji/items/3e293f31f9bbf388e216)がまだの方はこちらからお読みください。

##やりたいこと
応用編では、初級編でやったことを用いてLabelと画像の値を変更してモーダルで表示することをします。
完成形の画面はこんな感じだよ!

##RemoteConfigの設定
画像を参考にしながら、FirebaseのRemoteConfigの画面から、任意のパラメータキー(card_key)デフォルト値に以下のjsonを入力します。

“`json:RemoteConfig
{
“title”: “企画のタイトル!!!”,

元記事を表示

FirebaseのRemoteConfigを使ってLabelの値を変更しよう![RemoteConfig初級編]

##開発環境
Xcode: Version 11.3
実機iPhone: iOS 13.1
Firebase: Version 6.14.0
FirebaseRemoteConfig: Version 4.4.6

##やりたいこと
FirebaseのRemoteConfigを使ってLabelの値を変更したい。
初級編では、RemoteConfigを利用してViewControllerのLabelを変更してみようということで以下の画像のように、「Firebase 勉強中!!!」の文字を実際にRemoteConfigを利用して表示させていきます。

**RemoteConfig応用編**
応用編では、RemoteConfigを利用してモーダルの値を変更してモーダルで表示することをやります。
[応用編はこちらをクリック!](h

元記事を表示

クリーンアーキテクチャーをざっと理解できる短いコードを書いた

クリーンアーキテクチャーは沢山インターフェースやクラスが登場し、その関係をざっと把握するのが難しいです。
そこですべての要素が入ったなるべく短いコードを書いてみました。XCodeのPlaygroundなので、そのまま実行できます。[githubのリポジトリはこちらです。](https://github.com/TokyoYoshida/CleanArchitecturePlayground)なお、今回はざっと理解することを優先するため、クリーンアーキテクチャーについての詳しい説明は割愛します。参考記事をご覧ください。

このコードは、Uncle Bobの書いた[Clean Architecture 達人に学ぶソフトウェアの構造と設計](https://booklog.jp/item/1/4048930656)と、次の記事を参考に書いています。

参考記事:
実装クリーンアーキテクチャ: https://qiita.com/nrslib/items/a5f902c4defc83bd46b8
Laravelで実践クリーンアーキテクチャ: https://qiita.com/nrslib/i

元記事を表示

CMSampleBufferのCの関数使わなくてよくなったみたい

これまでCMSampleBufferからImageBufferを取り出す時などは

“`swift
let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
“`

という関数を使っていましたが、iOS13.0から

“`swift
@available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
public var imageBuffer: CVImageBuffer? { get }
“`

というプロパティが生えて、

“`swift
sampleBuffer.imageBuffer
“`

でアクセス出来るようになりました!
imageBufferの他、timingInfoやformatDescriptionも同様に取れるようになっていました。
便利ですね!

元記事を表示

フライウェイトをSwift5で実装する

※この記事は「全デザインパターンをSwift5で実装する」https://qiita.com/satoru_pripara/items/3aa80dab8e80052796c6 の一部です。

###The Flyweight(フライウェイト)

####0. フライウェイトの意義

同種のオブジェクトを大量に作らなくてはいけない時、それらの中に共通する不変のデータがある場合、これを複数のオブジェクトから参照するような設計にすると良い。

もし、全オブジェクトが同じデータを直接保持するとなると、生成するオブジェクト数が多い場合はかなりのメモリの無駄につながってしまう。

これがフライウェイトというデザインパターンである。

####1. フライウェイトを使わない場合

宇宙船を表すクラス`SpaceShip`のオブジェクトを1000個作る場合を考える。

“`swift:SpaceShip.swift
public class SpaceShip {

//宇宙船の外見(形およびテクスチャ)を表すプロパティ
private let mesh: [Float]

元記事を表示

[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Mediator~

この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。

**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)

# Mediatorパターン概要

– Mediatorとは「仲介者」という意味です。
– **複数のオブジェクト間で直接やり取りをせずにMediatorを介してやり取りします。**
– 各オブジェクトが依存する相手をMediatorだけにすることで、オブジェクト同士が疎結合になり、関連オブジェクトが多い場合には保守性を向上できます。
– GoFのデザインパターンでは**振る舞いに関するパターン**に分類されます。

# 使い所

実務的な例としては、**UIPageViewControllerの配下にある子ViewControll

元記事を表示

iOS, Androidアプリの価格変更(キャンペーン)の仕方

# はじめに
以前アプリをリリース([iOS, Mac, Androidのアプリをリリースしてみた
](https://qiita.com/am10/items/41d94d5175dbf63fc706))したのですが、複数の方から100円も払えるかクソが!!といわれました:sob:

まだ機能が思ってる完成形には達していないし、やっぱだれかがダウンロードしてくれないとおもしろくないししばらくは無料にすることにしました!!

たまにみるキャンペーンみたいなので期間限定無料をやりたいと思い調べていたのですがやり方があんま出てこなかったので備忘録として書きます。

# iOS, Mac版
iOSとMacアプリについてです。やり方はめっちゃ簡単。(だからあんま調べてもでてこないのかも)

1. 下記ページを開きます
App Store Connect -> マイ App -> 対象アプリ -> App Store -> 価格および配信状況
2. 価格表の「価格変更を計画」をクリック
3. 価格、開始日、終了日を選択
ios_price

元記事を表示

GatsbyJSとNetlifyでiOS/AndroidアプリのLPを勢いで作ってみた

## 経緯
2020年1月にiOSアプリをリリースして、もともとAndroidのアプリがあったので
これは今ならLP作れるのでは… :sparkles:
という浅い考えと、何か新しい方法で試してみたいという欲求から今回は
GatsbyJSとNetlifyを使ってLPを作る事にしました。

Twitterでいろいろ教えていただき、自分の中でベストプラクティスを考えたので紹介します。

## 結論

先に結論を

元記事を表示

OTHERカテゴリの最新記事