- 1. UIAlertController の title と message のパターン
- 2. UITableViewでセルを選択不可にする方法
- 3. signin with apple 実装するときの注意点まとめ
- 4. Googleで検索結果に戻ったときの「他の人はこちらも検索」を非表示にする方法
- 5. Swift で 画像 (UIImage ) の リサイズ と トリミング (切り抜き) を一度の処理で行う。
- 6. CustomCellに置いたButtonの選択状態によってTableViewの処理を変える
- 7. [Swift] IntやDoubleなどの数字オブジェクトを2倍にする関数でジェネリクスを使ってみた
- 8. React Native体験入学【環境構築】【標準コンポーネントの使い方】【リリースまで】
- 9. 【Swift】UICollectionViewCompositionalLayoutを使って数種類のカスタムレイアウトを実装してみる
- 10. FirebaseのRemoteConfigを使ってキャンペーンのようなモーダルを表示させたい[RemoteConfig応用編]
- 11. FirebaseのRemoteConfigを使ってLabelの値を変更しよう![RemoteConfig初級編]
- 12. クリーンアーキテクチャーをざっと理解できる短いコードを書いた
- 13. CMSampleBufferのCの関数使わなくてよくなったみたい
- 14. フライウェイトをSwift5で実装する
- 15. [iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Mediator~
- 16. iOS, Androidアプリの価格変更(キャンペーン)の仕方
- 17. GatsbyJSとNetlifyでiOS/AndroidアプリのLPを勢いで作ってみた
- 18. 【swift5】カウントダウンタイマーの実装
- 19. 素人がiPhoneアプリを作った話<SNS機能>
- 20. iOSアプリ内にAPIアクセスキーを保持するベストプラクティス(Swift)
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.32020年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以下は対応しないため、別々のデザイン準備する必要があります。
# 取得できるユーザーデータ
– ユーザーの選択でランダム生成されたメール渡せる可能性があります
– 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. 価格、開始日、終了日を選択
GatsbyJSとNetlifyでiOS/AndroidアプリのLPを勢いで作ってみた
## 経緯
2020年1月にiOSアプリをリリースして、もともとAndroidのアプリがあったので
これは今ならLP作れるのでは… :sparkles:
という浅い考えと、何か新しい方法で試してみたいという欲求から今回は
GatsbyJSとNetlifyを使ってLPを作る事にしました。2020年初のアプリリリースしました?
神社巡ったり好きな方は良ければ使って見てください。iOSアプリです。m(_ _)mhttps://t.co/qv2C9dDhu1— slowhand (@wes_ja0927) January 17, 2020
【swift5】カウントダウンタイマーの実装
まずUIPickerViewで「何時間」「何分」「何秒」を選択してストップウォッチ作成。
そこからカウントダウンするのですが、セットした時間が全部秒になってしまっております。。。
60秒以内なら問題ないのですが1分30秒だと90秒のような感じ。
カップラーメンに使ったり筋トレのタイマーなんかにはいいのではないでしょうか。
2020年1月18現在ではこんな感じですが、修正したいと思います。
## デザイン
![スクリーンショット 2020-01-18 20.38.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270808/2d294f54-91a5-edf7-974f-d9c37ab3993a.png)
## ソース全体
```swift import UIKit
class TimerViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutle
素人がiPhoneアプリを作った話<SNS機能>
# やりたかったこと
* アカウント作成(ユーザー登録) * 承認制のクローズドSNS * ユーザーによるアイコン選択 * タイムライン表示 * 書き込み * 編集 * 削除 * 何種類かの「いいね」機能 * アカウント削除 * 通報 * ログイン * 自動ログイン
#できたこと
* アカウント作成(ユーザー登録) * ユーザー登録はAPIでWordPressにメールを登録する形になっています * 登録も含めてユーザー管理はプラグインのUltimate Menberで行っています 1. メールアドレスを入力してSign Upボタンを押すとメールが送信されます 2. 折り返しメールが届きます 3. メールのURLからWordPressの新規登録画面へ行って登録します * 承認制のクローズドSNS * Ultimate Menberの承認制なので、管理者にメールが届き、承認作業をします(アプリ上では承認前でもログインできてしまいますが) * タイムライン表示 * 書き込み * 削除 * いいね機能(一部) * 1種類のみ * タ
iOSアプリ内にAPIアクセスキーを保持するベストプラクティス(Swift)
## はじめに
iOSアプリ開発において、APIアクセスキーの管理方法に疑問を持ちました。
iOSアプリ開発で、APIアクセスキーなどの機密情報を管理するベストプラクティスを実は知らない?
privateリポジトリだとソースコードに直書きしてしまいがちなので、ちょっと調べてみよう— ウホーイ (@the_uhooi) January 11, 2020
Twitterでいろいろ教えていただき、自分の中でベストプラクティスを考えたので紹介します。
## 結論
先に結論を