- 1. cocos2d-x-3rd-party-libs-src (v3-deps-161) を bitcode 有効にしてビルド
- 2. 【Ionic+Firebaseでアプリ開発】お気に入り登録機能を実装する
- 3. UITableView セルのサイズを自動的に変更する
- 4. waidayoを使って手軽にUnityやUE4でフェイシャルキャプチャ(表情取得)しよう
- 5. [iOS] Metalで効率的にループ計算する機能 “Raster Order Group” について
- 6. iOSでお気に入りの写真以外を一括削除する
- 7. Swiftでセマフォ(semaphore)にさわってみよう
- 8. NeumorphismなUIButton
- 9. FlutterアプリでonResume的なタイミングの処理をする
- 10. UITableViewCell の UIView-Encapsulated-Layout-Height について
- 11. iosのショートカットで現在時刻の年月日時分を別々の変数に入れる
- 12. iOSでmd2pdf
- 13. XcodeGenを使ってUI Testing Bundle (UIテスト用ターゲット) を追加する
- 14. 実機とシミュレータでフォントサイズが違う?UITableViewCellのカスタムビューのフォントサイズをポイント固定で指定してはいけない
- 15. Objective-Cで三項演算子のYESの場合を省略する
- 16. 【Flutter】Flutter製アプリをリリースしてみた、あとARとかも使ってみた話
- 17. iOS13でショートカットのバックアップを作成する
- 18. CleanArchitecture ファイルの自動生成(iOS・Swift)
- 19. RxSwiftで検索+ページネーションをいい感じにする
- 20. iOSの各種シミュレーターをfzfで選んで起動する
cocos2d-x-3rd-party-libs-src (v3-deps-161) を bitcode 有効にしてビルド
cocos2d-x の v3 ブランチ の external を bitcode 有効にしてビルド
# 環境
1. macOS 10.15.4 (英語)
2. Xcode 11.5# 手順
1. [cocos2d-x-3rd-party-libs-src](https://github.com/cocos2d/cocos2d-x-3rd-party-libs-src) を git clone
$ git clone https://github.com/cocos2d/cocos2d-x-3rd-party-libs-src.git
Cloning into ‘cocos2d-x-3rd-party-libs-src’…
remote: Enumerating objects: 2700, done.
remote: Total 2700 (delta 0), reused 0 (delta 0), pack-reused 2700
Receiving objects: 100% (2700/2700), 515.98 KiB | 517.00 K
【Ionic+Firebaseでアプリ開発】お気に入り登録機能を実装する
#はじめに
[【Ionic+Firebaseでアプリ開発】Firestoreの中身を一覧表示する](https://qiita.com/se_fy/items/c5f832629957fc69d910)の続きです。
今回はFirestoreの中身を一覧表示するだけのiOSアプリに、お気に入り登録機能を追加します。以下のように実装します。
・追加したいアイテムを左から右にスライドすると、登録ボタンが現れ、タップするとお気に入りに登録できる
・「お気に入りに登録しました」と表示する([ion-toast](https://ionicframework.com/docs/api/toast))
・お気に入りに登録したアイテムはお気に入り一覧画面に表示される
・お気に入り一覧画面から削除したい場合はアイテムを右から左にスライドすると、削除ボタンが現れ、タップすると削除できる
![firebaseList.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410068/d4f9ad44-1793-1948-35d
UITableView セルのサイズを自動的に変更する
## スタータープロジェクト
スタータープロジェクトでは、テーブルビューのセルに `UITextView` が一つだけあり、それには次のようなビューの制約(レイアウト)が含まれています:
このプログラムビュー `Storyboard` では、テキストが表示されるはずです。
waidayoを使って手軽にUnityやUE4でフェイシャルキャプチャ(表情取得)しよう
# はじめに
こんなツールを作りました。
Oredayo4V (おれだよ for VTuber)です。#Oredayo4V がどれだけ多機能かというと、DiscordとOredayo4V (とWaidayo)だけで、こんなビデオ通話が実現できます。
仮想Webカメラ機能、PostProcessing機能、背景画像機能のあわせ技です。https://t.co/oXtb2JiE7N pic.twitter.com/aeAFr7I1g2— Segmentation Fault (@Seg_Faul) [iOS] Metalで効率的にループ計算する機能 “Raster Order Group” について
Apple製のGPUシェーダー言語Metalにて、ループ計算を効率的に行うことができる仕組み「[Raster Order Group](https://developer.apple.com/documentation/metal/gpu_features/understanding_gpu_family_4/about_raster_order_groups)」について実験してみたのでまとめてみたいと思います。
# はじめに
この記事では以下について紹介します。– Raster Order Groupとは?
– Raster Order Groupの処理の流れ
– 実装における注意点以下では、Appleが公開しているサンプルコード ([リンク](https://developer.apple.com/documentation/metal/rendering_a_scene_with_deferred_lighting)) をベースに、コードの中身の簡単な解説と実装時の注意点について説明します。
# Raster Order Groupとは?
例えば以下例のように、iOSでお気に入りの写真以外を一括削除する
こんにちは。
今回はiOSのカメラロールで、お気に入りの写真以外を一括削除するショートカットを作ったので紹介します。
ちなみにちょっといじると選択したフォルダ以外の写真を一括削除することもできます。#目次
1. 完成形
2. 必要なアプリ
3. ざっくりな流れと説明
4. できあがり
5. あとがき#1.完成形
###[お気に入りの写真以外を一括削除](https://www.icloud.com/shortcuts/04fe114f6ebf47cc8f2a2d8926105e2a)ちなみに、実行すると本当に削除して良いか最初に尋ねられます。(なんか怖いから)
これは仕様なのですが、前述とは別に削除を実行する際も再度尋ねられます。
まぁボタン一つ押したら全部消えちゃうのも怖いですし確認はあった方がいいかなと個人的に思ってます。ショートカットが開けない時は、
**iPhoneの設定→ショートカット→信頼されていないショートカットを許可**
にチェックを入れると開けるようになります。(※自己責任でお願いします)また、そのチェックさえ入れられない時は、一度ショートカット
Swiftでセマフォ(semaphore)にさわってみよう
# はじめに
最近セマフォ(semaphore)について振り返る機会があり、Swiftでの動作を確認する意味もあってSwiftでセマフォの[サンプルソースコード](https://github.com/BlueEventHorizon/SemaphoreExample)を作成しました。
そのソースコードを用いて、「セマフォって聞いたことはあるけど??」と思っているエンジニアのために本記事を書いてみました。
# セマフォ(semaphore)とは
下記は[wikipediaからの引用](https://ja.wikipedia.org/wiki/セマフォ)です
>セマフォ(英: semaphore)とは、計算機科学において、並列プログラミング環境での複数の実行単位(主にプロセス)が共有する資源にアクセスするのを制御する際の、単純だが便利な抽象化を提供する変数または抽象データ型である。
セマフォを理解するキーワードは、**「並列」**と**「資源」**だと思います。
**「並列」**な動作を行う複数のスレッドやプロセスが、共有する**「資源」**を正しく利用できる(アクセス制
NeumorphismなUIButton
※ **gifは、影の大きさを調節する関数を実装する前のものです。**
# はじめに
NeumorphismなUIButtonを作ったときのことを記録に残しておきます。
![index.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352824/cbe42ea2-8a34-5137-9506-8e39d67b9071.gif)## このButtonのしくみ
見てもらうとすぐわかるんですが、
クリックされていないときは、このボタンは– ボタンの外側の上と左に光があたっている。
– ボタンの外側の下と右に影がついている。というような特徴をもっています。
それだけでなく、FlutterアプリでonResume的なタイミングの処理をする
# 状況
カレンダー式表示のアプリを作成しています。「今日」が分かりやすいように、その日付のセルだけ背景色を変えています。
しかし、特にiOSで問題になるのですが、アプリをホームボタンでバックグラウンドに移動していて、もう一度アプリを立ち上げたときに、そのタイミングで日付が変わっていても「今日のセル」が移動してくれません。
Androidでいう、”onResume”のタイミングで処理ができれば解決できると思い、調査しました。# 環境など
|ツールなど|バージョンなど|
|:–|:–|
| MacBook Air Early2015|macOS Mojave 10.14.6|
|Android Studio |3.6.1|
|Java |1.8.0_131|
|Flutter|1.12.13+hotfix.9|
|Dart |2.7.2|
|Xcode |11.3.1|# 解決策
`SystemChannels.lifecycle.setMessageHandler`を使います。
詳しくはこちら。
https://api.flutter.dev/flutter/servi
UITableViewCell の UIView-Encapsulated-Layout-Height について
## この記事について
デバッグによって得られたテーブルビューセルの高さの挙動についてのメモです。
##### 環境
Xcode Version 11.5 (11E608c)
## Self-sizing Table View Cells
UITableView は次のような設定によって、オートレイアウトベースでセルの高さを決定できるようになります。
“`swift
tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableView.automaticDimension
“`要点は2点です。
– `estimatedRowHeight` に `0` 以外の適切な値を設定する
– `rowHeight` に `UITableView.automaticDimension` を設定するこの設定によって、オートレイアウトベースでセルの高さを決定することができます。あとは、セルのコンテンツビュー内のレイアウト制約を過不足なく配置するだけです。
![carbon (3).png](https://q
iosのショートカットで現在時刻の年月日時分を別々の変数に入れる
iosに搭載されているショートカットは魅力的なプログラミング環境なんだけど、情報が少ないので、見つけたtipsを記録しておく
#現在時刻の文字列
現在時刻を取得して年月日時分を別々に得るまで
##取得
下の図のアクションで現在時刻を取得して、それを文字列テキストに変換します
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535482/9bc8fa39-29c7-1ef8-a41b-d651e8b91e74.jpeg)
以下の説明では、最初のアクションを[日時/{現在の日付}] (1)
次のアクションを
[書類/{日時}からテキストを取得] (2)
と表記します。{}は変数を示します
日時はアクション(2)で「日付として」、日付けフォーマット「中」、時間フォーマット「短」としたとき
2020/05/28 22:47 (a)
あるいは
2020/05/28 5:24 (b)
というフォーマットになります
##年月日の取り出し
正規表現を使って日時文字列から年月日を取り出します
iOSでmd2pdf
# はじめに
## 自己紹介
H1ronoです。趣味でiOSでプログラミングをしています。
## この記事でやること
[Pythonista3](https://apps.apple.com/jp/app/pythonista-3/id1085978097)と[ショートカット](https://apps.apple.com/jp/app/ショートカット/id915249334)を使用し、iOSで`.md`から`.pdf`を作成しました。詳細を共有することで、iOSの開発能力が伝わればなと思っています。
※筆者の環境はiPhone 8, iOS 13.4.1(OSはこの記事を書いている時点で最新)です。
# 準備
## 1. Pythonista
### 1-1. モジュール
マークダウンからHTMLへの変換に[mistune](https://pypi.org/project/mistune/)モジュール、コードハイライト用に[pygments](https://pypi.org/project/Pygments/)を使用します。
pygmentsは最初からPyth
XcodeGenを使ってUI Testing Bundle (UIテスト用ターゲット) を追加する
Product Typeに `bundle.ui-testing` を指定するとUIテスト用ターゲットを追加できます。
https://github.com/yonaskolb/XcodeGen/blob/master/Docs/ProjectSpec.md#product-typeproject.ymlでUIテスト用ターゲットの定義と、メインのターゲットでのtestTargetの定義をすれば追加できます。
“`project.yml
targets:
ExampleApp:
type: application
…
scheme:
testTargets:
– ExampleAppUITests
ExampleAppUITests:
type: bundle.ui-testing
platform: iOS
scheme: {}
sources: ExampleAppUITests
dependencies:
– target: ExampleApp
実機とシミュレータでフォントサイズが違う?UITableViewCellのカスタムビューのフォントサイズをポイント固定で指定してはいけない
## 実機とシミュレータのフォントサイズが違う?
UITableViewに配置するカスタムTableViewCellをつくったときの話。– 参考:[カスタムTableViewCellを作るときにはだいたいこうやってます\-プロトタイプで作るか、xibで作るか \- Qiita](https://qiita.com/naochi___/items/dcbf58acb925fc716af5)
実機テストのとき **「カスタムTableViewCellのフォントサイズが小さい」** という現象がありました。調べた結果、UILabelのFont設定をポイント指定していたことが原因だったのですが、そこに至るまでに時間を吸われたので、おなじ沼にハマらないように :memo:
### シミュレータでの見え方
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883/79e67f6f-f180-df46-2baa-dd51ff7f599d.png)
>
> 上:標準のUITableViewCe
Objective-Cで三項演算子のYESの場合を省略する
## 背景
案件のコード見てたらすごく簡潔に書かれた三項演算子があった!
まさかこんな書き方ができるとは知らなかったので、メモしておきます。## コード
“`objcNSDictionary *dic = @{@”a”: @”AAA”, @”b”: @”BBB”};
NSString *str = dic[@”b”] ? : @””;
NSLOG(@”str: %@”, str);
// str: BBBstr = dic[@”c”] ? : @””;
NSLOG(@”str: %@”, str);
// str:
“`## Swift だったら…
Swiftならデフォルト値入れるだけで?♀️
Swift便利だな〜“`swift
let dic = [“a”: “AAA”, “b”: “BBB”]
var str = dic[“b”] ?? “”
// str : BBB
print(“str : \(str)”)str = dic[“c”] ?? “”
print(“str : \(str)”)
// str :
“`## まとめ
Obj
【Flutter】Flutter製アプリをリリースしてみた、あとARとかも使ってみた話
## アプリ概要
ゴルフの[オリンピックゲーム](https://www.clunk.jp/golf-olympic-rules#1)の計算やボールとピンまでの距離のAR測定,1−18までの乱数を生成することができる、ゴルフ幹事向けのアプリです。
[App Store はこちら](https://apps.apple.com/jp/app/engolf/id1507668448?l=en)
[Google Play Store はこちら](https://play.google.com/store/apps/details?id=com.tetsukick.engolf)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/67933117-6fcb-fd17-a67e-2c6f9c547368.png)
## 前置き
\デデーン!/
![C8A144FA-0D15-4497-9D09-87E76FE70F28.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561438/1d94abe3-9d5c-9d00-5b93-f5173a60224b.jpeg)
目当てのショートカットがなかなか見つからなかったり、割と不便なのでこの機会に整理します。
## iOSのバージョンによってはバックアップの復元方法が違う
iOS12での方法は既に先駆者様達が個人ブログ等でまとめてくださっているので、ここではiOS13でのバックアップ・復元方法について取り上げます。## 必要なもの
・iCloud Drive
・ファイルApp
・ショートカットApp## バックアップ
![9D25654D-66EC-4584-8019-AD6B06B762C5.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561438/be434557-0CleanArchitecture ファイルの自動生成(iOS・Swift)
CleanArchitectureではファイルを大量に生成するので、できれば手動ではなく自動で行いたい。そのための手段をまとめた。
### Xcodeのテンプレート機能
#### メリット
Xcodeの機能として、テンプレートファイルを用意しておいておくと、ファイル生成時に選ぶことができる。
Xcodeの機能にすぎず、特別な設定は不要でプロジェクトの中身に何ら影響がない。テンプレートファイルは~/Library/Developer/Xcode/Templatesに置く。#### デメリット
テンプレートファイルは何処かから拾ってくるか自分で書く・編集する必要がある。自分は下記から拾った。
#### 参考
https://medium.com/swift2go/installing-the-clean-swift-template-in-xcode-6b4367006827### Kuri
#### メリット
普通に使いやすい
#### デメリット
ymlファイル・テンプレートファイルをプロジェクトルートに置かないといけない(プロジェクトの構成に影響がある)
RxSwiftで検索+ページネーションをいい感じにする
iOSアプリの以下のような条件の検索画面を RxSwift でいい感じに実装する方法をメモします。
– キーワードを入力して検索ボタンをタップすると検索開始する
– 検索APIは結果が多い場合を想定して、ページ番号指定によるページネーションができる
– 検索結果一覧の最後のアイテムを表示するタイミングで自動で次のページを読み込む
– 最後のページまで読み込んだら終了する### 実装方法
以下、検索画面 `SearchView` を想定したコードです。細かい説明はコメントとして書いてあります。また、ところどころに動作確認用の print 文が入っています。
– 検索ボタンを押した時は `search(by keyword: String)` を実行する
– 結果一覧の最後のアイテムを表示するタイミングで `requestNextPage()` を実行する“`swift:SearchView.swift
/// 検索画面
class SearchView {
/// キーワードを入力して検索ボタンを押した時に実行する処理
func search(by key
iOSの各種シミュレーターをfzfで選んで起動する
プリミティブな方法だと
“`console
$ xcrun simctl list
“`で、起動したいシミュレーターのUUIDを確認して
“`console
$ xcrun instruments -w 208E5166-9C5D-4CA5-A9DE-529AD562D311 # iPhone 11 Pro Max
“`とすると指定したシミュレーターが起動するのだが、Xcodeをアプデするとシミュレーターも更新されてしまうので、以前書き留めておいたUUIDが使えなくなる。また調べないといけなくてめんどくさい。
ということで、インクリメンタルに端末名で検索してEnterで起動するようにした。
`.zshrc` に以下を追記
“`zsh:.zshrc
function simc() {
xcrun instruments -w $(xcrun simctl list | grep -v unavailable | grep -E “^\s” | grep -v “:” | fzf | grep -oE “\((.+?)\)” | grep -oE “.{2