- 1. [SwiftUI]actionやalertを2つ連続して使うときのハマりどころ
- 2. 【Flutter】Flutterの複数バージョンを共存させる方法
- 3. 新しいmapを使ってみた
- 4. CocoaPodsインストール時に発生する「ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES」の意味と対応方法2つ
- 5. iOSのネットワーク接続状態の検出にはReachabilityよりシンプルなNWPathMonitorを使いましょう。
- 6. 【iOS】Pythonista3でQiitaのトレンドを表示してくれるウィジェットを作った。【Python】
- 7. 【Flutter】超簡単!要素を画面いっぱいに表示する方法【Expanded】
- 8. TFCoreMLで変換したモデルの出力がおかしい時の対処法
- 9. ReactNative × FirestoreでiOSアプリを作成する手順とまとめ
- 10. 【入門】iOS アプリ開発 #4【アーキテクチャの設計】
- 11. 【Swift】正規表現で含有判定
- 12. 【Flutter】グラデーション使用時に境界線が見える問題
- 13. 【Flutter】安心してレポジトリを公開するために必要なgitignoreの設定
- 14. 【iOS】Pythonista3でGIFアニメを分解する。
- 15. Fastlane での Rebuild from Bitcode オプションの付け方
- 16. [Swift] Viewの下にViewが隠れてしまった
- 17. 【iOS】Pythonista3でGIFアニメのコマごとの表示時間を変更する。
- 18. 【SwiftUI】@Bindingや@Stateをつけたプロパティをイニシャライザで初期化する
- 19. SwiftでArrayの中の全ての要素が、特定の条件を満たすかどうか判定する方法
- 20. iOSアプリのHTMLテンプレートに基づいてPDFを作成します(例えばレシート)
[SwiftUI]actionやalertを2つ連続して使うときのハマりどころ
SwiftUIで`.action`や`.sheet`を使うときに、ハマってしまって時間を浪費してしまいました。その解決策のメモです。
## どのような問題か
下記のように`.alert`を2つつなげた場合、後のalertしか表示されませんでした。
“`swift
struct ContentView: View {@State var presentAlert1: Bool = false
@State var presentAlert2: Bool = falsevar body: some View {
VStack(spacing: 32) {
Button.init(“アラート1”) {
self.presentAlert1.toggle()
}
Button.init(“アラート2”) {
self.presentAlert2.toggle()
}
【Flutter】Flutterの複数バージョンを共存させる方法
## この記事で話すこと
FlutterのバージョンをStableやMasterなど複数共存させる際に数秒で切り替える方法をお伝えします。## 背景
Flutter 1.2.0がリリースされて、アップデートしたが、あるプロジェクトで動作しないライブラリがあったため、
Flutter ‘Stable’と’1.17.4’を同居させる必要がありました。毎回アップグレード、ダウングレードを実施しているとその度に10分程度失うことになるので、何かないかと探していたところfvmというものがあるらしかったので、使用したらいい感じだったので紹介です。
## fvmとは
[fvm](https://github.com/leoafarias/fvm)>Flutter のバージョン管理。Flutter SDK のバージョンを管理するためのシンプルな cli です。
>FVM は、プロジェクトごとに使用される Flutter SDK のバージョンを参照することで、一貫したアプリビルドの必要性をサポートします。また、複数の Flutter バージョンをインストールしておくことで、毎回 Flut
新しいmapを使ってみた
# はじめに
Apple Developer DocumentationをみるとMapKit中に[struct Map](https://developer.apple.com/documentation/mapkit/map)が増えています。
どうもSwiftUIで直接mapが表示できるようになったようです。
実際に作ってみました。
サンプルプロジェクトは[github](https://github.com/FromF/MapSwiftUI)にアップしてあります。# コードの解説
[サンプルプロジェクト](https://github.com/FromF/MapSwiftUI)のポイントを紹介します。
## Mapを表示する
“`swift
@State var coordinate = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 36.0, longitude: 138), latitudinalMeters: 2000000, longitudinalMeters: 2000000)
Map
CocoaPodsインストール時に発生する「ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES」の意味と対応方法2つ
# はじめに
CocoaPodsをインストールしたときに、「ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES」に関する警告が表示されることはありませんか?
この記事では、その意味と対応方法を2つご紹介します。# 発生する事象
pod install を実行した場合、以下のようなメッセージが表示されることがあります。
以下は、MyAppというプロジェクト名・ターゲット名のアプリの例です。## Terminalに表示される警告メッセージ
“`
[!] The `MyApp [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-MyApp/Pods-MyApp.debug.xcconfig’. This can lead to problems with the CocoaPods installation
– Use the `$(inher
iOSのネットワーク接続状態の検出にはReachabilityよりシンプルなNWPathMonitorを使いましょう。
iOSでネットワーク接続状態の取得といえば`Reachability`を使うといった印象が強くありませんか。
`Reachability`を使うには、まず
https://developer.apple.com/library/archive/samplecode/Reachability/Introduction/Intro.html
からApple の提供しているサンプルコードをダウンロードして・・・なんて手間がありましたが、もっと手軽に利用できるApple標準のクラスがありました。# 簡単にネットワーク接続のモニタリングが可能
ライブラリいらずで、iOSのネットワーク接続状態監視にはNWPathMonitor使うとよいことを知った。30行くらいで書ける。 pic.twitter.com/X6e8C0YAq8
— Natsui@?iOSエンジニア (@MeSummery)
【iOS】Pythonista3でQiitaのトレンドを表示してくれるウィジェットを作った。【Python】
#はじめに
iPhone, iPadユーザーの皆さん、iOS端末上でPythonでの開発ができる[Pythonista3](https://apps.apple.com/jp/app/pythonista-3/id1085978097)というアプリはご存知でしょうか?
Pythonを実行するだけであれば個人的には[Carnets – Jupyter](https://apps.apple.com/jp/app/carnets-jupyter/id1450994949)がおすすめですが、
Pythonista3では各種ショートカットやウィジェットなどといったアブリ外から使用可能な機能の開発や、ゲームを作ることも出来ます。今回はそんなPythonista3を使って
**Qiitaのトレンドを表示してくれて、クリックするとSafariでそのページを開いてくれるウィジェット**
を作成したので紹介したいと思います。
![qwid.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501281/dd91298e-
【Flutter】超簡単!要素を画面いっぱいに表示する方法【Expanded】
#この記事を読んで習得できること
Flutterの画面作成で「画面いっぱいに要素を表示したい」っていう問題を解決する力(多分)#結論
・`Expanded`を使って要素を隙間いっぱいに大きくする
#こんな感じ
![スクリーンショット 2020-08-14 15.14.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389553/74f6e974-c974-be98-40e8-216eea3d2469.png)#とりあえず、書いてみる
“`main.dart
class _MainViewControllerState extends State{
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Container(
decora
TFCoreMLで変換したモデルの出力がおかしい時の対処法
WWDC2020あたりを境に、tfcoremlで変換したGANの出力が全部真っ白になりました。
##対処法
Core ML Tools 4.0をインストールして変換し直す。“`shell
pip install coremltools==4.0b2
“`tfcoremlに比べて、変換メソッドのオプションがシンプルに変わっています。
“`python
import coremltools as ct
image_input = ct.ImageType(shape=(1, 256, 256, 3,),
scale=2/255,bias=[-1,-1,-1])coreml_model = ct.convert(
yourmodel,
inputs=[image_input],
)
coreml_model.save(“yourmodel.mlmodel”)
“`これで出力されました。
ReactNative × FirestoreでiOSアプリを作成する手順とまとめ
# ■概要
## CloudFirestoreとは
Firebaseが提供している、NoSQLベースのデータベースのうちの一つ(MBaasの一つ)
RealtimeDatabase → CloudFirestoreに進化!
Q、何が改善されてる?
A、データモデルの改善、クエリ強化されている。## Firebaseの機能とデータベース
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586262/29c5ff60-81fd-af34-eb6b-5255e75d28ec.png)
# ■準備
– Firebaseプロジェクトのセットアップ
Firebase公式ページからコンソール画面に移動して、新規アプリ作成。
プロジェクトIDとロケーションは**後で変更が出来ない**ので、注意!
※国内向けサービスの場合、asia-northeast1(東京)or asia-northeast2(大阪)
– バックエンド側のセットアップ
【入門】iOS アプリ開発 #4【アーキテクチャの設計】
# アーキテクチャの設計
今回はパックマンのゲームを構築するにあたり、全体のアーキテクチャを設計する。
仕様書から画面モードは4つあり、それぞれのモード内にはキャラクタがいて移動処理などがある。これらを1つ1つのオブジェクトとして管理し扱っていく。
![Image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678332/2a570726-a266-ca09-2a2e-ab180a14be1b.png)
# 設計方針
各画面モードをオブジェクトとして扱い、簡単に切り替え操作したい。
“`swift
attractMode.startSequence()
// ・・・アトラクトモード実行中・・・// アトラクトモードからクレジットモードへ切り替える
attractMode.stopSequence()
creditMode.startSequence()
// ・・・クレジットモード実行中・・・
“`
こんな感じ。またイベント・メッセージを画面モード内のオブジェクトにも簡単に通
【Swift】正規表現で含有判定
# 文字列を含んでいるのか
* 正規表現パターン:`pattern`を引数で渡し、含んでいるのか評価した結果をtrue/falseで返します。
* エラーがthrowされた場合、正規表現が間違えています“` swift
extension String {
func contain(pattern: String) -> Bool {
guard let regex = try? NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options()) else {
return false
}
return regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(), range: NSMakeRange(0, self.count)) != nil
}
}
“`# 利用方法
### 実装“` swift
pri
【Flutter】グラデーション使用時に境界線が見える問題
# 概要
グラデーション使用時に境界線が見えてしまう場合がある。
[画面描画時のディザリング](https://api.flutter.dev/flutter/dart-ui/Paint/enableDithering.html)を有効にする事により、滑らかに表示する事ができる。## 再現
“`dart
import ‘package:flutter/material.dart’;class App extends StatelessWidget {
static const String _title = ‘Gradient Test’;@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Color(0
【Flutter】安心してレポジトリを公開するために必要なgitignoreの設定
#この記事を読んで習得できること
Flutterのフォルダを安心してgithub or gitlabに載せられるようになる#結論
`.gitignore`に
`!*/.gitignore`を追加するこれより下は時間がある人だけでいいですよん
#安心して,とは…?
Flutter関係の記事を載せようと思っていて、その際にソースコードも公開したいなーと思っていた。全世界に公開するのなら、自分のPC内の情報は載せたくないなー(当然)と思っていたので、フォルダ内に自分の情報が載っていないか、調べてみた。
調べたっていっても、そんなたいそうなことはしてなくて、
フォルダ内のソースを、以下の文章で検索してみるってだけ。
`/Users/<自分で付けたPCのユーザー名>/`すると、結構な分量が出てきてしまった。
![スクリーンショット 2020-08-13 19.52.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389553/e498988b-b9dd-d61a-510b-26da20c
【iOS】Pythonista3でGIFアニメを分解する。
# はじめに
以前、[GIFアニメでハマった記事](https://qiita.com/maboy/items/17816eda284d1fefd5e5)を書きましたが、その時に調べたなかで**GIFアニメの分解**に興味があったので作ってみました。# GIFアニメを分解する
これは**PIL**の中の**ImageSequence**でできました。
ついでに、iOSの共有シートから呼び出す仕様にしました。“`python:gif2png
import appex
import console
import photos
import tempfile
from PIL import Image
from PIL import ImageSequencedef main():
if not appex.is_running_extension():
console.hud_alert(‘共有シートから実行して下さい。’,icon=’error’,duration=2)
returnFilePath = appex.get_image().filename
Fastlane での Rebuild from Bitcode オプションの付け方
### Bitcode とは?
iOS9から導入された技術で LLVM の中間言語のことを指します。以前まではコンパイルが完了しているものを Apple に提出していましたが、Bitcode を用いることで Apple 側で最適化してコンパイルを行えるようになります。
### Bitcode を用いたくない場合
基本的にアプリで Bitcode を有効にする場合は、依存しているライブラリなども全て Bitcode に対応している必要があります。そのため、Carthage などでコンパイル済みのバイナリを使用するような時にライブラリの Bitcode が有効になっていない場合はアプリを配信するときなどにプロジェクトの Bitcode を無効にする必要があります。
### Xcode から配信する場合
`Rebuild from Bitcode` のチェックボックスを外せば無効にできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292456/07f90d57-f661-5
[Swift] Viewの下にViewが隠れてしまった
viewの下にviewが隠れてしまったことがありました。
## 該当のソースコード“`swift
override func viewDidLoad() {
super.viewDidLoad()showAlert()
secondScreenUI()
}
“``showAlert()` はアラートを表示させる関数です。
`secondScreenUI()`は画面のUIが定義されている関数です。## 想定していた動作
## 実際の動作
![スクリーンショット 2020-08-13 17.34.05.png](https://qiita-image-store.s3.ap-northeast-1.ama
【iOS】Pythonista3でGIFアニメのコマごとの表示時間を変更する。
# はじめに
以前、[GIFアニメでハマった記事](https://qiita.com/maboy/items/17816eda284d1fefd5e5)を書く際に[GIFフォーマットの詳細](http://www.tohoho-web.com/wwwgif.htm#ImageBlock)という素晴らしい記事が見つけました。
GIFファイルの中の画像にはそれぞれディレイタイムが2バイトで設定されており、0.01秒単位で設定できるようです。# 目標は【Graphic Control Extension】
GIFファイルの中には画像データがあるのは当然ですが、画像データの前には**Graphic Control Extension**という8バイトのブロックがあるそうです。
### Graphic Control Extension
– Extension Introducer(1B) = 0x21 <= 印 1 - Graphic Control Label(1B) = 0xf9 <= 印 2 - Block Size(1B) = 0x04 <= 印 3 - R(3
【SwiftUI】@Bindingや@Stateをつけたプロパティをイニシャライザで初期化する
# Error: ‘self’ used before all stored properties are initialized
こんな感じで素直にイニシャライザを定義してしまうと、上記のエラーが発生します。
“`swift:WrappedTextField.swift
struct WrappedTextField: View {
private var placeholder: String?
@Binding private var textContent: Stringinit(placeholder: String? = nil, textContent: String) {
self.placeholder = placeholder
self.textContent = textContent
// Swift Compiler Error
// ‘self’ used before all stored properties are initialized
SwiftでArrayの中の全ての要素が、特定の条件を満たすかどうか判定する方法
Swift4.2からは `allSatisfy` メソッドが提供されています
ドキュメント: https://developer.apple.com/documentation/swift/array/2994715-allsatisfy
例:
“`swift
struct Item {
var id: String
var hasStock: Bool
}let category1 = [
Item(id: “1”, hasStock: true),
Item(id: “2”, hasStock: false),
Item(id: “3”, hasStock: true)
]let category2 = [
Item(id: “1”, hasStock: false),
Item(id: “2”, hasStock: false),
Item(id: “3”, hasStock: false)
]print(category1.allSatisfy { $0.hasStock == false })
iOSアプリのHTMLテンプレートに基づいてPDFを作成します(例えばレシート)
「大好きなお弁当屋さんのレシートアプリを作ろう!」
この例では、お客さんの購入した品目を入力し、PDFレシートを生成できるレシートアプリを作ります。PDFレシートはHTMLテンプレートに基づいて生成されます。
## この記事で学ぶこと:
– 表を含むウェブページのコーディング(簡単)
– PDFファイルをHTMLの文字列から生成
– PDFのプレビューウィンドウを表示## スタータープロジェ