iOS関連のことを調べてみた2022年06月24日

iOS関連のことを調べてみた2022年06月24日

バックグラウンド・スリープ時にもカウントダウンを動作させる

# やりたいこと
任意の時間からカウントダウンして、時間切れになったら任意の処理を行いたい。

## カウントダウン実装
今回はmm:ssの形でのカウントダウンを画面上に表示して、00:00になったら任意の処理を行うという実装です。

“`swift:countDownContoroller.swift
import UIKit

class countDownContoroller: UIViewController {

@IBOutlet weak var countDownLabel: UILabel!

var timer = Timer()
var time = 600 //10分間

override func viewDidLoad() {
super.viewDidLoad()
countDownStart()
}

func countDownStart(){
timerStart()
}

func timerStart

元記事を表示

【iOS】LINEログインを実装してみる

# はじめに

LINEログインの機能を簡単に触ってみたく、ドキュメント通りにやってみました。

https://developers.line.biz/ja/docs/line-login/overview/

# 環境
Xcode 13.3
Swift 5.6
LineSDKSwift 5.8.1

# 内容
### LINEディベロッパー登録

まずは登録

https://developers.line.biz/ja/services/line-login/

![スクリーンショット 2022-05-20 14.09.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/5ffb1ce0-9d44-8289-8ca4-f464cfe40d72.png)

## プロジェクト設定
https://developers.line.biz/ja/docs/ios-sdk/swift/setting-up-project/

>LINE SDK for iOS Swiftをビルドして使用する

元記事を表示

【SwiftUI】ダークモードに対応する

# 公式ドキュメント
https://developer.apple.com/documentation/swiftui/colorscheme

# 使い方
“`swift
import SwiftUI

struct ContentView: View {
@Environment(\.colorScheme) var colorScheme
var body: some View {
Text(colorScheme == .dark ? “Dark” : “Light”)
}
}
“`

# おわり
システムのカラースキームとは別のカラースキームをアプリ内で使用したい場合は少し工夫が必要になります。
以下の記事がとても参考になりました。

https://qiita.com/MaShunzhe/items/e0b5cab0df689438379f

元記事を表示

SwiftのDictionaryについて

## Dictionary(辞書)の基本
Swiftの Dictionary(辞書)は、「順序をもっておらず、キー(Key)と値(Value)が1セットになった複数のデータの集まり」です。

作成したキーは辞書の索引のようなイメージで、
キーを指定して、値の追加や削除、また取得することができます。
→ そのため、同じ名前のキーが複数存在すると混乱が起こってしまうので、辞書のキーは一意的ものである必要があります。

## Dictionaryの作り方
“`Swift
var dict1:[String: Int] = [:]
var dict2 = [String: Int]()
var dict3: Dictionary = [:]
var dict4 = Dictionary()
“`
公式ドキュメントでは1と2行目の[Key:Value]de
表記することを推奨しています。

さらに、型推論も使用できるので、データ型の省略もできます。
“`swift
var dict = [“Key1”: 10, “Key2”: 5, “K

元記事を表示

UnrealEngine iOSでカメラロールにスクリーンショットを保存する

# 最初に
UE4のバージョンは4.27.1
Xcodeのバージョンは13.1
になります。

Android端末でのスクリーンショットの方法に関しては


おかずさんが公開しているサンプルで可能です。
https://orenda.co.jp/blog/1791/
こちらの記事でもスクリーンショットの撮影方法に関して書いてくれていますので参考になります。

今回はiOSでカメラロールにスクショを保存する具体的な実装例がなく苦労したので一例として記事にしてみました。

# スクリーンショットを撮る方法

スクリーンショットを撮るには
FScreenshotRequestのRequestScreenshotで行います。
引数は
InFilename 使用するファイル名
bInShowUI SlateUIを表示するかどうか
bAddFilenameSuffix 自動生成された一意のサフィックスを指定されたファイル名に追加する必要があるかどうか
とあり基本的には
InFilen

元記事を表示

[Swift]UIImageのサイズを変更する(Extensionは使わない)

## はじめに
UIImageのsizeを変更しようとすると、`Cannot assign to property: ‘size’ is a get-only property`とエラーが発生します。対処法を調べてみると、UIImageを拡張することで対応しているコードが多いと思います。

ただ、Extensionは使わずにUIImageのsizeを変更したいと思う人もいるはずなので、今回はそんな人向けにコードを紹介します。

## コード
“`ContentView.swift
func hogehoge() {
let image = UIImage(named: “画像名”)
let scaledImageSize = CGSize(width: 100, height: 30)
let renderer = UIGraphicsImageRenderer(size: scaledImageSize)
let scaleImage = renderer.image { _ in
image.draw(in: CGRect(orig

元記事を表示

Swiftではじめに学ぶ「変数と定数」

## 変数と定数とは
プログラムに登場する値を記憶しておく入れ物、つまり一時的な保管庫のことです。
ある処理の結果を、この変数や定数に保存しておけば、後々その結果を使いたいタイミングで呼び出して再利用することができます。

ちなみに変数や定数に値を入れることを、「値を代入する」と言います。
そして文字通り、変数には何度でも値を代入することができ、定数には1度だけしか値を代入することができないルールがあります。ですので、プログラム上で確定している値に定数を使えば今後の処理で誤って別の値が代入されることこともないので安心です。つまり上手く使い分けることで、安全で可読性の高いプログラムが書けるようになります!

表記の仕方は下記のようです。
“`swift:
var number = 123 //変数numberに値「123」を保存している
let age = 16 //定数ageに値「16」を保存している
“`
・「var」は変数を、「let」は定数を指します

元記事を表示

SwiftでレーダーのUIを作ってみた。[iOS、iPhoneアプリ]

# レーダーを作ってみたい
映画「トップガンマーヴェリック」を見て、戦闘機に付いているようなレーダーを再現してみたいと思い作ってみました。

#### 完成図
スクリーンショット 2022-06-01 11.12.28.png

# カスタムクラスを作る
今回はRadarViewというカスタムクラスを作って実装しました。

“`swift:RadarView.swift
func configureUI() {
isUserInteractionEnabled = false
backgroundColor = UIColor.black
layer.cornerRadius = bounds.width / 2
layer.borderColor = UIColor(red

元記事を表示

RxSwiftメモ

# はじめに
RxSwiftにおける用語やクラスの概要をメモしました。

# メモ

– Observerパターン:デザインパターンの一つで、あるオブジェクトで発生したイベントを別のオブジェクトへ通知するモデル(= オブジェクトを監視してイベントが発生した場合にそれをオブザーバーへ通知するモデル)。
– RxSwiftにおけるイベント:画面上で発生するタップイベント、変数の値の変化、APIからの値の取得など**オブジェクトの状態変化全て。**
– データストリーム:RxSwiftでイベントストリームの中で流れてくるデータの部分
– Observableクラス: 監視可能なものを表し、データストリームを表現するクラス。onNext, OnError, OnCompletedの3種類を通知。実行者(出版)。
– subscribe(_:): Observableクラスのイベントを受け取れるメソッド。戻り値はDisposableオブジェクト。
– Disposableオブジェクト:Observableオブジェクトを利用する必要がなくなった際に、自動的にメモリを解放する

元記事を表示

NatCorderを使ってハマった罠が深いようで浅かった

## 概要

つい最近NatCorderというアセットが無料化!?というニュースが一部界隈を騒がせました
(ただし最新版はサブスクリプション契約でしか使えないよ!)
NatCorderは画面収録のアセットでネイティブな実装がゴリゴリでパフォーマンスがサクサクのスーパークールなアセットです

– https://github.com/natmlx/NatCorder

これは早速使ってみるしかない!!ということで使った結果、見事に罠にハマったので
これから増えるであろう利用者のために備忘録として残しておきます
実装方法などはドキュメントが充実しているので解説しません

## 検証環境

– iPhone***6s***
– iOS 14

## 結論

使ってる端末がエンコードできるRecorderを利用しよう!!!

## 経緯

### ?NatCorderで動画(音有り)を撮るためのRecorderがある

– MP4Recorder
– HEVCRecorder

MP4とHEVCってなんだ?と思って調べてみたところ
なんかよくわからんけどHEVCがオススメらしい Yahoo知恵

元記事を表示

Swiftとは?

プログラミング言語のswiftとは何か、初心者が学んだことをまとめます。

## Swiftとは
・Apple社が2014年に発表したiOS,macOS向けアプリケーション開発で使用するプログラミング言語。
・2015年にオープンソース化され、Linuxでの実行環境も提供されました。

### 特徴
* モダン
プログラミング言語でいう「モダン」とは、”コードが読みやすくて書きやすい”ということです。
Ruby,Python,C#など、近年のプログラム言語を研究して設計されているので、使いやすい機能や文法などが取り入れられています。

* 安全性が高い
安全性が高いとは、プログラムの実行を邪魔する「バグ」が発生しにくいということです。
Swiftはコンパイル言語(静的型付き言語)と言って、あらかじめ決めた変数や定数の型(type)に間違った値を入れると、コンパイルエラーを起こします。コンパイルエラーが出ている間は、プログラムを実行できないので、実行時に起こるバグを未然に防ぐよう教えてくれます。

* 高速
処理の高速化を目的に作られた言語なので、アプリを作った場合に他のどの言語よりも高

元記事を表示

【Xcode】アプリ名を変更する

# iOS
①プロジェクトを選択
②ターゲットを選択
③「General」を選択
④「Display Name」を好きなアプリ名に変更する
![スクリーンショット 2022-06-21 18.56.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/ecca4da0-f4c9-68e1-ea98-c58d8cb5c629.png)

# macOS
①プロジェクトを選択
②ターゲットを選択
③「Build Settings」を選択
④`product name`と検索
⑤緑の枠をダブルタップ
⑥好きなアプリ名に変更する
![スクリーンショット 2022-06-21 19.02.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/b19091d2-eeea-8d1c-8c5a-d92311b16419.png)

# おわり
iOSのアプリ名の変更はわかりやすかったのですが、
macOSには

元記事を表示

Proxyman for iOS を使う!

[前回の記事](https://qiita.com/a_jike/items/52d22287a0ea6eb1cf5b)が地味にじわじわヒッソリとLGTM頂いているのでここでもう一つ、iOS実機で使用する方法を実際に使用しながら検証し記事に起こしてみた。

最終的にわかったことで結論から言うと、
iOS上でMap/Breakpoint/Scriptingなどでプロキシできることを期待していたが、
実際は**レスポンス内容を見たり、コピーしたりすることしかできなかった**……
というサゲでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156085/fd786a17-4407-5236-3d33-99d0d52f1850.png)
https://proxyman.io/ios

COMING SOON….
うーん、やられた。。
年間でライセンス更新しないといけないのでCOMING SOONとロックアイコン無くなってからライセンス更新したほうが良いと思う。。(2022/

元記事を表示

iPhoneのアプリはどうやってできるのか?

スマートフォンで日々使えるアプリたち。
これらは一体どうやって作られているのか、まとめました。

## アプリとは?
アプリとは、「application software(アプリケーションソフトウェア)」の略で、目的にあった作業をする応用ソフトウェアのことです。
具体的には、スマホであれば、ゲームやメッセージアプリ、動画再生など
      パソコンであれば。表計算やワープロなど

このアプリたちは、『OS(オペレーションシステム)』上にインストールして使用できるようになります。

#### OSとは?
OSとは私たちが使うすべてのコンピュータ(パソコン、スマホなど)を制御するのに必要な基本ソフトウェアのことです。簡単にいうと、パソコンやスマホを動かすためのソフトです。OSがないと電源を入れても何も表示されず、キーボードから文字も入力できなくなります。

一般的なOSとしては、下記があります。
| パソコン | スマホ |
|:-:|:-:|
| Windows , MacOS , Linux , ChromeOS | iOS(iPhoneで使用)、Android|

## iO

元記事を表示

【Swift】WidgetExtensionのバグ

# 問題点
全角と半角を連続で入力すると強制的に省略される
![Simulator Screen Shot – iPhone 12 mini – 2022-06-20 at 14.03.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d4b456a8-1c3f-19f6-aa23-3b79895835e0.png)
“`swift
struct widget_bugEntryView : View {
var entry: Provider.Entry
var body: some View {
Text(“あいう123abc”)
}
}
“`

# 対策法1
全角と半角の間にスペースを入れる
![Simulator Screen Shot – iPhone 12 Pro Max – 2022-06-20 at 13.58.10.png](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

4K画質のAR

# iOSで4K画質のARコンテンツを作れる

従来ARKitでキャプチャできるカメラ画質は1920*1080が最高でした。
しかし、もっと高画質でキャプチャしたいケースもあります。

# 4K画質が使えるようになった

2022年のiOS16から、ARKitで4K画質が使えるようになりました。

# 使い方

recommendedVideoFormatFor4KResolutionがサポートされていることを確認し(nilを返さない)、videoFormatに指定します。
iPhone11以降、M1 iPadで使えます。

“`swift
let config = ARWorldTrackingConfiguration()
if let hiResFormat = ARWorldTrackingConfiguration.recommendedVideoFormatFor4KResolution {
config.videoFormat = hiResFormat
}
“`

違いが出るかわかりませんが、スクショ載せておきます。

1920*1080

元記事を表示

いつ、どこで、誰が、何をした?のことばを使って長い文章を作成する試み

# はじめに
皆さんは、「いつ、どこで、誰が、何をした?」という遊びをご存じでしょうか。
これは、参加者がそれぞれ、「いつ」「どこで」「誰が」「何をした」の4種類の言葉を紙に書き、ランダムに組み合わせてできた文章を楽しむ遊びです。

最近、この遊びをiOS上で遊ぶことができる「いつどこ語り」というアプリをリリースしました。
このアプリはもともと小学生の娘たちと遊ぶためだけに作ったもので、追加した言葉で短文を作る機能しかありませんでした。
しかし、あるとき「長文も作れたら結構面白くなるのでは?」と思い機能追加したところ、かなり面白いもの(主観)ができたのでストアにリリースしてみることにしました。

本記事では、長文作成機能を組み込むにあたって苦労したこと・面白かったことを紹介しようかと思います。

# できあがったもの
技術的な話に入る前に、まずは、完成したものをお見せします。

**長文作成例:**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136183/56e8ea81-5bb

元記事を表示

SwiftUIのViewThatFitsを使ってレスポンシブWebデザインっぽいレイアウトを実装してみる

Webの世界では多くのWebページがレスポンシブWebデザインで実装されています。
例えば[Qiitaのホームページ](https://corp.qiita.com/products/)も下記のようにブラウザの横幅に応じてデザインが変わります。
![スクリーンショット 2022-06-19 13.09.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42150/38906b91-d4bd-306a-9ed4-5e532484ebae.png)
こちらのデザインは、横幅が小さいときは縦に並び、長いときは横に並ぶようになっています。

iOS SwiftUIの世界でもWWDC22で発表された`ViewThatFits`を使ってWeb同様のレスポンシブデザインを実装できるようになったので試してみました。

## ViewThatFitsとは

[ViewThatFits](https://developer.apple.com/documentation/swiftui/viewthatfits)はWWD

元記事を表示

【SwiftUI】Previewを端末指定する

# iPad (8th generation)
“`swift
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.previewDevice(PreviewDevice(rawValue: “iPad (8th generation)”))
}
}
“`

# iPad (9th generation)
“`swift
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.previewDevice(PreviewDevice(rawValue: “iPad (8th generation)”))
}
}
“`

# iPad Air (4th generation)
“`swift
struc

元記事を表示

Cronetのxcframeworkを作成してiOSでQUICする

# Cronet の xcframework を作成して iOS で QUIC する
* Cronet を利用することでiOSアプリで QUIC を使った HTTP 通信(HTTP/3)ができるようになります

> HTTP/3 とは
> HTTP/3 は次世代のインターネット プロトコルで、QUIC の上に構築されています。QUIC は、Google が開発し、インターネット プロトコルの規定を担う標準化団体 IETF に提唱したプロトコルです。HTTP/3 と QUIC を組み合わせることで、ヘッドオブライン ブロッキング、セキュリティ(TLS 1.3 は QUIC の基盤)、信頼度の低い接続での信頼性など、HTTP/2 での以前の課題に対処しています。
[https://cloud.google.com/blog/ja/products/networking/cloud-cdn-and-load-balancing-support-http3](https://cloud.google.com/blog/ja/products/networking/cloud-cdn-and-l

元記事を表示

OTHERカテゴリの最新記事