- 1. visionOSのUIをiOSで試してみる
- 2. 【Xcode】Invalid App Store Icon. The App Store Icon in the asset catalog in ‘RedSheetCamera.app’ can’t be transparent nor contain an alpha channelでアップロードできない
- 3. 【Xcode】シュミレーターのタップを可視化する
- 4. 【SwiftUI】TikTok風アニメーションの作り方
- 5. SwiftUI Stepperの実装方法
- 6. 【SwiftUI】onChangeで2つの値を監視する
- 7. SF Symbolsを使う時の注意点?
- 8. 【iOS15.0+】SwiftUI.Textでリンク付きテキストを実装する
- 9. 【個人開発】【iOS】積み上げ記録を残せるアプリをリリース
- 10. 【Swift】引数にある謎の`&`について
- 11. 【SwiftUI】onChangeの古い値を取る方法
- 12. iOSアプリ証明書(Apple Developer)概要
- 13. Xcode15 beta インストール方法
- 14. 【Swift】MapKitを使用して場所のサジェストを受け取る
- 15. 【Swift】符号を取得する方法
- 16. Flutterパッケージ(simple joystick)を初めて作成&公開してみた。
- 17. iPhone 14 Pro, iPhone 14 Pro Max でステータスバーとナビゲーションバーの間に白い余白が生じる
- 18. SwiftUIでハンドスピナーを作る方法
- 19. 【SwiftUI】Textの文字同士のスペースを操作する
- 20. モバイルアプリ開発での二分探索適用例
visionOSのUIをiOSで試してみる
# はじめに
Appleは、iOSやmacOSなどのApple製品のUIをFigmaで公開しています。その中には、WWDC2023で発表されたばかりのvisionOSのUIもあります。この記事では、「visionOSのUIをiOSで再現するとどうなるのか」という実験をこのFigmaファイルを参考にやってみます。https://www.figma.com/community/file/1253443272911187215
# ツールバーボタン
visionOSのツールバーボタンは、視線移動により操作がしやすいように大きくなっています。このボタンをiOSで再現すると、このようになりました。![IMG_CCAED4CB4968-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366249/4df403a9-52ef-98fe-0b77-98c78db6bda1.jpeg)
少し視認性は低いものの、意外と悪くないですね。ボタンをあまり目立たせず控えめなデザインにしたいときには良いかも知れませ
【Xcode】Invalid App Store Icon. The App Store Icon in the asset catalog in ‘RedSheetCamera.app’ can’t be transparent nor contain an alpha channelでアップロードできない
# はじめに
アイコンが原因でAppStoreConnectにアップロードできない現象にハマりました。# エラー
“`
Invalid App Store Icon. The App Store Icon in the asset catalog in ‘RedSheetCamera.app’ can’t be transparent nor contain an alpha channel.
“`![スクリーンショット 2023-07-17 19.04.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1ba11093-d71a-7303-bedf-4663a4467a59.png)
# 原因
透過画像を使っている or アルファチャンネルが含まれているこのどちらからしいです
透過画像ではないのでアルファチャンネルが含まれている可能性が高いです。# 確認方法
① アイコンを右クリックします
② 「情報を見る」を選択します
![スクリーンショット 2023-07-
【Xcode】シュミレーターのタップを可視化する
# はじめに
Kavsoftさんのツイートする動画にはどこをタップしたかわかるような円があったので、
これを自分のシュミレーターでも試してみました!#SwiftUI Metal Shader Effects – iOS 17 – WWDC 2023https://t.co/wLobeQWlRs pic.twitter.com/S5hjMrMwGp
— Kavsoft (@_Kavsoft) June 19, 2023
# やりかた
“`:ターミナル
defaults write com.apple.iphonesimulator ShowSingleTouches 1
“`# おわり
これいいですねー# 参考記事
https://qiita.com/bitpoetics/items/0fee66732f5eab54a851
【SwiftUI】TikTok風アニメーションの作り方
# はじめに
SwiftUIでTikTok風のアニメーションを作る方法を紹介します。# デモ
SwiftUIでTikTok風のアニメーションできた?#SwiftUI pic.twitter.com/4kIlJkKxF9
— Shota (@shota_appdev) July 16, 2023
# コード全体
“`swift
import SwiftUIstruct ContentView: View {
// これがtrueのときにTikTok風のエフェクトをかける
@State private var glitching = false// 0.1秒ごとにtrue/falseを切り替えるためのタイマー
private let timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()private let text = “TikTok”
// テキストの位置をランダムにずらす範囲
private let offset
SwiftUI Stepperの実装方法
普段はAndroidの開発をしているのですが、SwiftUIに興味を持ち色々調べたりしてます。
その中で、StepperというのはAndroidには無い物だったので実装してみました。
Xcode Version 14.2
“`StepperSumpleView.swift
struct StepperSumpleView: View {
@State var count:Int = 0
var body: some View {
VStack {
Stepper(value: $count, in: 0…10, step: 1) {
Text(“\(count)”)
}.frame(width: 250)
}
}
}
“`![スクリーンショット 2023-07-16 20.57.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/e30a
【SwiftUI】onChangeで2つの値を監視する
# はじめに
昨日に引き続き`onChange`に関する内容です。# 実装
“`swift
import SwiftUIstruct ContentView: View {
@State private var text1 = “”
@State private var text2 = “”
var body: some View {
VStack(spacing: 10) {
TextField(“”, text: $text1, axis: .horizontal)TextField(“”, text: $text2, axis: .horizontal)
}
.onChange(of: [text1, text2]) { newValue in
print(“text1:”, newValue[0])
print(“text2:”, newValue[1])
}
SF Symbolsを使う時の注意点?
# はじめに
SF Symbolsを使う時の注意点を和訳とともににまとめました。# 注意事項
## 原文
:::note warn
Be sure to understand the terms and conditions for using SF Symbols, including the prohibition against using symbols — or images that are confusingly similar — in app icons, logos, or any other trademarked use.
:::## 和訳(Google翻訳を使用)
:::note warn
アプリのアイコン、ロゴ、またはその他の商標での使用におけるシンボルまたは紛らわしい類似の画像の使用の禁止を含む、SF シンボルの使用に関する利用規約を必ず理解してください。
:::# 出典
https://developer.apple.com/design/human-interface-guidelines/sf-symbols# おまけ
「Symbol
【iOS15.0+】SwiftUI.Textでリンク付きテキストを実装する
# はじめに
iOS14以前はSwiftUIでリンク付きテキストを実装しようとすると、NSAttributedTextやUILabelなどを使う必要があり、結構面倒でした。iOS15以降はめちゃめちゃ簡単に実装することができます。
# Textでリンク付きテキストを実装する
Textはマークダウンを解釈できるので、以下のように実装するだけでリンク付きテキストを実装できます。“`swift
Text(“[リンク](https://example.com)だよ”)
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81715/007fa1d5-3578-40d5-dc8e-a8dad58b3c3d.png)
しかし、例えばURL部分に変数やメソッドを使用するとリンクになりません。
“`swift
let url = “https://example.com”
Text(“[リンク](\(url))だよ”)
“`![image.png](https://qiita
【個人開発】【iOS】積み上げ記録を残せるアプリをリリース
# はじめに
積み上げ記録を残し、目標達成までのサポートをするアプリをリリースしました。# URL
https://apps.apple.com/us/app/buildtimer/id6448892333# 目的
日々何かに取り組んで努力している方は多いと思います。そういった毎日の行いを記録化してアウトプットできれば幸せになれると思い開発しました。
また、データ化することで分析でき目標達成へのサポートにもなります。BuildTimerは毎日の活動を管理し、計画的に目標達成を支援します。
# サービス概要
### 1.積み上げ目標を投稿
右下のプラスボタンから積み上げ目標を投稿することができます。
目標内容、アイコン、目標達成にかける時間を設定します。
![ezgif.com-video-to-gif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/c4ba62f8-805a-583a-7992-fe88fdf8af37.gif)### 2.活動を記録
カウント
【Swift】引数にある謎の`&`について
# はじめに
Swiftのコードを読んでいて、関数の引数に謎の`&`がついていたので調べてみました。# 例
以下のコードを見てください。“`swift
func increment(number: inout Int) {
number += 1
}var number = 0
increment(number: &number)
print(number) // 1
“``increment(number: &number)`を見ると、引数に`&`がついています。
これは、`inout`引数というものです。# inout引数とは
`inout`引数は、関数内で引数の値を変更することができます。
例のコードを実行すると、`increment(number: &number)`で`number`の値を変更していることが確認できます。# inout引数を持つ関数の作り方
`inout`引数を持つ関数を作るには、引数の型の前に`inout`をつけます。“`swift
func increment(number: inout Int) {
nu
【SwiftUI】onChangeの古い値を取る方法
# はじめに
`onChange`で古い値を使いたくなったのでやり方を調べたら可能そうだったので記録しておきます。# 実装
“`swift
import SwiftUIstruct ContentView: View {
@State private var text = “”
var body: some View {
TextField(“”, text: $text, axis: .horizontal)
.onChange(of: text) { [text] newValue in
print(“古い値:”, text)
print(“新しい値:”, newValue)
}
}
}
“`# おわり
こんなことできるの知りませんでした# 参考記事
https://blog.code-candy.com/swiftui_onchange/
iOSアプリ証明書(Apple Developer)概要
# はじめに
こんにちは。エン・ジャパン株式会社でネイティブアプリエンジニアをしております谷田貝です。
弊社では公開しているiOSアプリが多くあり、その証明書類を扱う方も多くいます。[Apple Developer](https://developer.apple.com/)のiOSアプリ証明書類は複雑で理解するのも大変なため、社内で勉強会を行いました。本記事ではその内容を展開します。お役に立てれば幸いです。
###### 本記事の目的
– iOSアプリ開発にて扱う証明書類の相関関係、発行から使用までの流れを説明
– 各種証明書類の特徴や扱う上での留意事項の説明###### 想定読者
– これからiOSアプリ開発を始める方、証明書周りを理解したい方
– 協力会社にiOSアプリ証明書類を提供する必要がある方###### 記載対象
– 証明書類の発行手順詳細については割愛
– iOSアプリ作成、運用において主なもののみ説明# iOSアプリ証明書 なぜ必要か、何に使うのか
主なものは・・・
– Development / Distribution Certificate
Xcode15 beta インストール方法
Xcode15Beta版のインストールに少しだけ躓いたので、記載しておきます。
Xcode15のインストールは下記リンクにアクセスします。
https://developer.apple.com/download/all/?q=XcodeAppleID、パスワードを入力して、以下の画面に遷移します。
Platformのチェックマークを全て外した状態で、Xcode 15 beta 4 and Selected Platformsをクリックすれば、Xcodeのxipファイルがインストールができます。
**なぜか選択できるPlatformにチェックマークが入っていると、xipファイルがインストールされないです。**![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128814/5e375120-b327-2abb-3024-3aef382b97d5.png)
エンジニアのキャリアについて記事を描いてみたので、ぜひご覧ください。
https://qiita.com/p__kiba/it
【Swift】MapKitを使用して場所のサジェストを受け取る
# はじめに
MKLocalSearchCompleterを使用して場所の検索をローカルで行うことができるっぽいので試してみました。# サンプルアプリ
![Simulator Screen Recording – iPhone 14 – 2023-07-13 at 19.43.24.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/6e7e65bb-da54-f161-e1df-afa058c65a68.gif)# 実装
“`swift
import SwiftUIstruct ContentView: View {
@StateObject private var viewState = ViewState()
var body: some View {
NavigationStack {
List(viewState.localSearchCompletions, id: \.self) { localSearchCo
【Swift】符号を取得する方法
# はじめに
この記事では、Swiftで符号を取得する方法を紹介します。# Int型の場合
`signum()`メソッドで符号を取得できます。正の場合は1、負の場合は-1、それ以外の場合は0を返します。
“`swift
let number = -10
let sign = number.signum()
print(sign) // -1
“`# Double型の場合
`sign`プロパティで符号を取得できます。正の場合は`FloatingPointSign.plus`、負の場合は`FloatingPointSign.minus`を返します。`FloatingPointSign`型は、浮動小数点数の符号を表す列挙型です。
“`swift
let doubleNumber: Double = -10.0
let doubleSign = doubleNumber.sign
print(doubleSign) // minus
print(type(of: doubleSign)) // FloatingPointSign// type(of:)関数は、引数
Flutterパッケージ(simple joystick)を初めて作成&公開してみた。
# どんなものを作成したのか?
– ゲームなどによくあるJoyStickを作成しました。
### こんな感じ
![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/351982/e51607cd-4617-ab60-c50a-e4cd970155a4.gif)# なぜ作成したか
– Flutterをやり始めて少し経ったので一つくらいパッケージを公開したかった。
– 類似するものもあったが、シンプルなものが見つからなかった。
– Animationの勉強がしたかった。## よかったら使ってください!!
## バグ、issueなどありましたらGithubにどんどん追加してください:clap:https://pub.dev/packages/simple_joystick
https://github.com/NaokiNishizawa/simple_joystick
iPhone 14 Pro, iPhone 14 Pro Max でステータスバーとナビゲーションバーの間に白い余白が生じる
iPhone 14 Pro, iPhone 14 Pro Maxでは「dynamic island」と呼ばれる余白領域が新たに生じている。
[USE YOUR LOAF – iPhone 14 Screen Sizes](https://useyourloaf.com/blog/iphone-14-screen-sizes/)
単純にステータスバーの高さのビューを追加しているだけだと余白が出てしまう。そのため、UIWindowの`safeAreaInsets.top`により余白の部分を含んだ高さを取得し、その高さのビューをUIWindowに追加し、そのビューの背景色を変えるなどすれば対応できる。
“`swift:UIApplication+StatusBar.swift
extension UIApplication {
var statusBarView: UIView? {
if #available(iOS 13.0, *) {
let tag = 3848245let keyWindow = U
SwiftUIでハンドスピナーを作る方法
# はじめに
この記事では、スワイプするとハンドスピナーの回転が加速するアニメーションを作る方法を紹介します。# 対象者
SwiftUIの基本的な使い方を知っている人# やり方
“`swift
struct ContentView: View {
@State private var angle: Double = 0// 加速度
@State private var acceleration: Double = 0private let timer = Timer.publish(every: 0.01, on: .main, in: .common).autoconnect()
var body: some View {
Image(systemName: “fanblades.fill”)
.resizable()
.frame(width: 300, height: 300)
.rotationEffect(.degrees(a
【SwiftUI】Textの文字同士のスペースを操作する
# はじめに
Textの使ったことのない機能を発見したので記事にしておきます# 実装
“`swift
import SwiftUIstruct ContentView: View {
var body: some View {
VStack(spacing: 10) {
Text(“サンプル”)
.kerning(0)Text(“サンプル”)
.kerning(10)Text(“サンプル”)
.kerning(20)Text(“サンプル”)
.kerning(30)
}
}
}
“`![simulator_screenshot_1CF7BB98-41FC-4C46-9A79-350D0B3DBA24.png](https
モバイルアプリ開発での二分探索適用例
## 前置き
プログラミングについて勉強していくとアルゴリズムのカテゴリに触れることがあるかと思います。その時に大体のケースでソートや、全探索、二分探索について学ぶ方が多いのではないかと思います。しかしながら、実際にフロント側の開発(筆者はiOSアプリ開発ですが)ではこれらのアルゴリズムを使うケースはあまりないのではないかと思っています(筆者の経験では、、、)。ですが最近開発で二分探索を使う機会がありましたので共有できればとおもいます。
### 二分探索
二分探索(Binary Search)は、ソート済みのリストや配列内で指定した値を効率的に探すアルゴリズムです。大まかな手順は次の通りです。1. リストの中央にある要素を調べます。
2. その要素が目的の値と一致すれば、探索はそこで終了します。
3. 中央の要素が目的の値より大きければ、その要素より小さい方(左半分)を新たな探索範囲とします。
4. 中央の要素が目的の値より小さければ、その要素より大きい方(右半分)を新たな探索範囲とします。
5. 新たな探索範囲でステップ1から再び探索を行います。これを範囲がなくなるまで(目的の値