- 1. [Swift]NavigationBarの下線の消し方(iOS13以降)
- 2. [Swift] Concurrency の関数で戻り値が Void 型の時に出るエラーを解消する
- 3. 【UIKit】指定した色と違う色がNavigationBarに表示される
- 4. Flutterのnamed routesの実装
- 5. SwiftUIカスタムイニシャライザで@Bindingの初期化方法
- 6. UIkit経験者がSwiftUIを始める際に参考になる情報のまとめ
- 7. Swift StoryBoardからUIViewやUIButtonの枠線の太さ、色の設定を行う
- 8. 【UIKit】iOS15でNavigationBarの色を変更する
- 9. FlutterでiOSのボリュームをコントロールしてみる
- 10. iOSシミュレーターのフォルダをサクッと開くスクリプト
- 11. 【SwiftUI】iOS15から発生するPickerのバグ
- 12. addSubviewしたカスタムビューのUIButtonが押せない時
- 13. SwiftUI4, iOS16以降で使用できる NavigationStackについて軽く調査した
- 14. Swift 画面を強制的に回転させたい!
- 15. TypeScript で デバイスの傾きを検知する
- 16. NSURLErrorDomainの内容
- 17. 【Flutter】カメラの使用許可を得るための設定【iOS】
- 18. SwiftUIで割り勘アプリの作り方を徹底解説!
- 19. FlutterのiOSシュミレーターで設定画面に遷移させる
- 20. Firebase AuthenticationでのSign in with Appleの削除要件に対するCloud FunctionsとFlutterの実装
[Swift]NavigationBarの下線の消し方(iOS13以降)
“`extension.swift
extension UINavigationBar {
@available(iOS 13.0, *)
private func applyAppearance() {
let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.shadowImage = UIImage()
appearance.shadowColor = .clear
appearance.backgroundImage = UIImage()
appearance.backgroundColor = .whitestandardAppearance = appearance
scrollEdgeAppearance = appearance
}
}
“`これで消せます。
[Swift] Concurrency の関数で戻り値が Void 型の時に出るエラーを解消する
# はじめに
案外、情報がなかったのでメモ程度に載せておこうかと思います。
# エラーに関して
Void 型に限らず、型が推測できないと同じエラーが出ます。
“`
Generic parameter ‘T’ could not be inferred
“`# 具体例
以下のような関数があった場合に発生します。
“`.swift
func doSomething() async throws {
try await withCheckedThrowingContinuation { [weak self] continuation in
// 任意のAPIメソッドを呼び出したとする
self?.apiClient.call() { result in
switch result {
case .success(let response):
continuation.resume()
case .failure(let err
【UIKit】指定した色と違う色がNavigationBarに表示される
# はじめに
UIKitは学び始めたばかりなので間違っていたり、もっと良い方法がある可能性があります。
そのような場合はコメントか編集リクエストを送ってください。# やろうとしている事
こちらの画像をナビゲーションバーに表示して、
画像の背景と同じ色をナビゲーションバーに表示したい。
![logo-background-color.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/75c64834-258f-d210-2a21-9b16ed8a5622.png)# 作業
まず、画像の背景のRGBを調べます。
![スクリーンショット 2022-07-09 18.35.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/46430dab-41d5-f19f-7b24-b03944e79999.png)`rgb(85,197,0)`でした。
このRGBをナビゲーションバーに設定します
`
Flutterのnamed routesの実装
# はじめに
version
参考文献 [公式Document](https://docs.flutter.dev/cookbook/navigation/named-routes)
エディタ androidstudio# 結論
routing設定はこんな感じ
“`
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: ‘/’,
routes: {
‘/’: (context) => const MyHomePage(),
‘/second’: (context) => const SecondScreen(),
},
);
“`実際に遷移したいときは以下のようにnameを指定してください
“`
// MyHomePageに遷移する場合
Navigator.pushNamed
SwiftUIカスタムイニシャライザで@Bindingの初期化方法
普段はAndroidのエンジニアをしてますが、SwiftUIを触っていたところ、initが必要なSwiftUIを作成していたところBindingが初期化されてないことにハマったので記載しておこうと思います。
“`TimeView.swift
@Binding var dateTextTime: String
@Binding var nowDate: Dateinit(dateTextTime: Binding
,nowDate: Binding ) {
self._dateTextTime = dateTextTime
self._nowDate = nowDate
}
“`引数の型は “Binding
“と、“Binding “です。
名前の前に“_“を付けることが必要となります。全然分からず悩みました。
普段Android開発をしてますが昔UI作るのに苦戦していたので、SwiftUiでUIを簡単に作れるようになったので、iOSの開発もやっ
UIkit経験者がSwiftUIを始める際に参考になる情報のまとめ
## 書籍
[1人でアプリを作る人を支えるSwiftUI開発レシピ](https://www.amazon.co.jp/dp/B08NCXF81P/ref=cm_sw_r_tw_dp_MJAPQ985KWCCM1MQF5TK?_encoding=UTF8&psc=1)WWDCのセッションの内容がコンパクトにわかりやすくまとまっているので、これだけでも十分と言えますが、SwiftUIに関連するXcodeの使い方は載っていないので、そこはWWDCやチュートリアルで補完すると丁度良くなります。
## Apple公式
### チュートリアル
https://developer.apple.com/tutorials/swiftui### WWDC
#### 2021
– [What’s new in SwiftUI](https://developer.apple.com/videos/play/wwdc2021/10018/)
– [Direct and reflect focus in SwiftUI](https://developer.apple.com/videos/pl
Swift StoryBoardからUIViewやUIButtonの枠線の太さ、色の設定を行う
StoryBoardからUIViewやUIButtonの枠線の設定を行う事が増えたのでメモ
# 角丸にする
任意の部品のUser Defined Runtime Attributesに直接書く
今回はUIButton
“`
Key Path:cornerRadius
Type:Number
Value:5
“`
これだけ。
**UIView、imageViewなどはclipsToBoundsにチェックを入れないと反映さえないので注意!!!!**# 枠線をつける
任意の部品のUser Defined Runtime Attributesに直接書く
“`
Key Path:layer.borderWidth
Type:Number
Value:1Key Path:borderColor
Type:Color
Value:red(実際は色を直接選択)
“`
**しかし、これだけでは反映されない.**layer.borderColorプロパティにはcgColor値を設定しないといけないが、StoryBoardで指定している色はUIColorのため
コードで変換し
【UIKit】iOS15でNavigationBarの色を変更する
# やり方
「Cocoa Touuch Class」を選択して「Next」を選択します。
![スクリーンショット 2022-07-09 16.39.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5d6c5625-a427-45b1-4d15-1e77cd0c1820.png)**Class**: 任意のクラス名を設定
**Subclass of**: `UINavigationController`を選択
![スクリーンショット 2022-07-09 16.40.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/33efb98b-0138-9e89-d048-44a1752bed97.png)作成したクラスをStoryboardと紐付けます。
![スクリーンショット 2022-07-09 16.45.50.png](https://qiita-image-store.s3.
FlutterでiOSのボリュームをコントロールしてみる
[volume_control](https://pub.dev/packages/volume_control)を利用して、下記のようなUIを作成し実際にiOSの音量を調整できるようにしてみました。
![スクリーンショット 2022-07-08 15.42.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/360246a6-ba65-5edc-6ed5-e782e5c5c0cb.png)
“`pubspec.yaml
dependencies:
volume_control: ^X.X.X
“`
バージョンは上記サイトより指定し
“`
flutter pub get
“``import ‘package:volume_control/volume_control.dart’;`して使えるようにします。とりあえず、`Example`通りにやっても動かなかったので、`Hooks`に切り替えましたが上手くスライドしてくれず。
“`
dependencies:
hook
iOSシミュレーターのフォルダをサクッと開くスクリプト
以下のスクリプトを実行すると、現在実行中のシミュレーターのフォルダを開くことができます。
バンドルの中身を確認したり、ドキュメントフォルダにファイルが保存されていることを確認したりしたいときに、このスクリプトがあるとさくっとシミュレーターのフォルダを開くことができるので便利です。
“`bash
#!/bin/bashcd ~/Library/Developer/CoreSimulator/Devices
cd `ls -t | head -1`/data
open .
“`![20211224015340.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81715/93f4129b-7674-2a51-ba3e-110efb09a6b7.png)
簡単にスクリプトの内容を説明します。
`cd ~/Library/Developer/CoreSimulator/Devices`で、全シミュレーター端末のフォルダが格納されたパスに移動します。
![20211224020308
【SwiftUI】iOS15から発生するPickerのバグ
# はじめに
iOS14では機能していたコードがiOS15で突然挙動がおかしくなるバグに遭遇しました。
解決方法が分かる方はコメントください。# 条件
– iOS15
– スタイルが`wheel`# 仕様?バグ?
まず前提として、なぜか`Picker`スタイルが`wheel`だと`frame`だけでサイズ変更する事ができません。
`clipped()`を追加する必要があります。
“`diff_swift
import SwiftUIstruct ContentView: View {
@State var index: Int = 0
var body: some View {
Picker(“”, selection: $index) {
ForEach(0..<5) { i in Text("選択肢\(i + 1)") } } .labelsHidden() .pickerStyle(.wheel)
addSubviewしたカスタムビューのUIButtonが押せない時
# はじめに
xibでカスタムビューを作成し、viewControllerでaddSubviewしたのですが、カスタムビュー内のUIButtonをタップしても反応してくれなかったので対処法をメモ
# 原因
カスタムビューのサイズ指定をviewControllerではなくカスタムビューで行っていました。
“`CustomView.swift
final class CustomView: UIView {@IBOutlet private weak var button: UIButton!
init() {
let view = UINib(nibName: “UpperSearchView”, bundle: nil).instantiate(withOwner: self, options: nil).first as! UIView
view.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 50) //カスタムビューでサイズ指定
ad
SwiftUI4, iOS16以降で使用できる NavigationStackについて軽く調査した
## まえがき
WWDC2022にてNavigationStackが新しく発表されました。
iOS16からNavigationViewはdeprecatedで、NavigationStackを使わないといけないです。SwiftUIは画面遷移周りがよくない・・・・!と、
SwiftUIを実戦投入していても、画面遷移まわりはUIKitを使用しているという話をチラホラききますし、
私が参画している現場においても画面遷移はUIKitで書いてます。NavigationStackをどんなものか気になっていたので、軽く調査してみました。
## Case 1, NavigationStackとNavigationLinkのみを使って遷移
NavigationStackの中にNavigationLinkを配置して遷移するだけ。
NavigationStackをdeprecatedされたNavigationViewのようです。“` swift
struct NavigationStackSample1: View {
let parkList: [Park] = [.init(
Swift 画面を強制的に回転させたい!
回転のコードはこれ!
“`swift
override func viewDidLoad() {
//右か左か判定
if(UIDevice.current.orientation.rawValue == 4){
UIDevice.current.setValue(4, forKey: “orientation”)
}
//左横画面以外の処理
else {
//最初の画面呼び出しで画面を右横画面に変更させる。
UIDevice.current.setValue(3, forKey: “orientation”)
}
}//MARK: 回転設定
override var shouldAutorotate: Bool {
return true
}
//MARK: 横画面のみ許可
override var supportedInterfaceOrie
TypeScript で デバイスの傾きを検知する
## 目的
– ios でもデバイスの傾きを検知したい。
– TypeScript で書きたい。## ソースコード
“`typescript
const permitOrientation = async () => {
if (typeof (DeviceOrientationEvent) !== “undefined” && typeof (DeviceOrientationEvent as any).requestPermission === ‘function’) {
//ios ブラウザでアクセスを求める
const res = await (DeviceOrientationEvent as any).requestPermission()
if (res !== “granted”) {
return //許可しない場合、イベントリスナー起動できない。
}
}
/**
* 傾き検知時に起動
*/
wi
NSURLErrorDomainの内容
[NSURLErrorDomainのコード一覧](https://qiita.com/temoki/items/aaf96408de14cb40b704)、参考になったのですが、それぞれどういった内容なのかも知りたくなり、説明を見つけたので残しておく。
→ [URL Loading System Error Codes](https://developer.apple.com/documentation/foundation/1508628-url_loading_system_error_codes)
故意的に、これらのエラーを発生させる方法も知っておきたいが、50コもあるので一旦保留。[参考][NSURLErrorDomainのコード一覧](https://qiita.com/temoki/items/aaf96408de14cb40b704)
【Flutter】カメラの使用許可を得るための設定【iOS】
# Runner.xcodeprojファイルの設定をする
簡単にできたのでメモ程度です。## 設定を行いたいFlutterアプリのファイルを開きRunner.xcodeprojを開く
パスはおよそこんな感じかと思います
/Users/ユーザー名/StudioProjects/アプリ名/ios### Runner.xcodeprojはこの青いファイル
![スクリーンショット 2022-07-05 12.12.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2030574/9273c4aa-5161-919a-9128-bbfc75504d1a.png)## RunnerディレクトリのInfoを開く
開いてみるとこんな感じになるかと思います。
![スクリーンショット 2022-07-05 12.06.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728559/edaae867-2a55-d753-
SwiftUIで割り勘アプリの作り方を徹底解説!
SwiftUIを学んでいく過程でポートフォリオがてら作成した「**割り勘アプリ**」の作成手順と方法をまとめていきます。
初心者の方でも同じものが作れるように解説できたらなと考えています。
拙い点や至らぬ点も多いと思いますがよろしくお願いいたします。
# 今回作っていくアプリ
:::note
割り勘アプリ
:::● 機能
+ 金額を入力して蓄積していく
+ 割り勘にする人数を指定
+ トータル金額 ÷ 人数 = 一人当たりの金額***
● 環境
+ SwiftUI***
● 作成(編集)するページ
+ ContentView(入力ビュー)
+ CalcBill(計算ビュー)
+ FileController(ファイル操作クラス)***
● 作成していくポイント
+ ユーザーが金額を入力できるようにする
+ 入力された金額を蓄積
+ 蓄積した金額のリセット
+ 割り勘する人数の指定## 新規プロジェクトの立ち上げ
今回はSwiftUIを使ってiOSアプリを作成していきます。必要になってくるのは**XCode**のみです。
[Xcodeのインストー
FlutterのiOSシュミレーターで設定画面に遷移させる
最終的にはアプリ内からIOS設定画面に遷移できれば良いので。
![スクリーンショット 2022-07-06 12.16.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/da0a4f2b-3643-bab5-72d5-5cbd877fdcba.png)
まずは、[permission_handler](https://pub.dev/packages/permission_handler)を`dependencies`の中に最新版を書きます。
“`pubspec.yaml
dependencies:
permission_handler: ^XX.X.X <-latest ``` `flutter pub get`する前に下記2行を`Info.plist`内に追記と↓ `PermissionGroupNotification
通知をするため `
“`ios/Runner/Info.plist
~省略~
Firebase AuthenticationでのSign in with Appleの削除要件に対するCloud FunctionsとFlutterの実装
こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[もぐめっと](https://mogmet.com)です。
![IMB_I6Cq1q.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/87b7c585-c4c4-1e04-42b5-337089d9e511.gif)
趣味はスノボです。まだまだ初心者ですが最近ルックバックかっこインディーという新しい技ができました。あまりにも嬉しかったのでつい動画にしてしまいました。本日は**Sign in with Apple**を用いているときに、アカウント削除機能を実装しないとレビューが通らなくなるようになってしまったので、Firebaseを使ったプロジェクトでどう実装すればいいかの共有をします。
https://developer.apple.com/jp/news/?id=12m75xbj
#