iOS関連のことを調べてみた2020年08月16日

iOS関連のことを調べてみた2020年08月16日
目次

iOSの「ショートカット」アプリを使って休暇申請メールを自動作成にしてみた話

# はじめに
ちょっとした息抜きで「ショートカット」アプリで自動化を取り入れてみた話
日々の細々とした作業は少しでも軽減していきましょう。

## 本編
ボタン押下と日付選択だけで休暇申請メールが自動で作成されるようにしてみました。

### 休暇予定日の入力設定
まず、休暇を申請する日付を入力できるようにしましょう。
「スクリプティング」>「通知」>「入力を要求」を選択し、以下のように設定します。

入力値はマジック変数「**休暇予定日**」と定義します。

|項目|設定|備考|
|—:|:–:|:—|
|質問|日付|入力要求時のメッセージを任意に設定|
|入力の種類|日付||

### 休暇種別の入力設定
休暇種別の内容を入力できるように設定をします。
テキストはマジック変数「**休暇種別**」と定義します。

#### 休暇種別を定義
まず休暇の種類を定義します。
「スクリプティング」>「リスト」>「リスト」を選択します。

今回は以下のように、一般的な全休・午前休・午後休を定義しました。
会社の制度に応じて任意に設定してください。

|項目|設定|
|–:|:–|

元記事を表示

[swift] CVPixelBufferからCGImage、UIImageへ変換する

iOSでカメラをリアルタイムで扱おうとすると、ところどころにcvPixelBufferが出てきますが、表示させたりフィルターをかけようとしたらCGImageやUIImage等に変換する必要があります。
そこで本記事ではCVPixelBufferからCGImageやUIImageに変換する方法をまとめておきます。

# CVPixelBuffer→CGImage

`VideoToolbox`ライブラリの`VTCreateCGImageFromCVPixelBuffer`という関数を使用します。

“`
import VideoToolbox

var cgImage: CGImage?
VTCreateCGImageFromCVPixelBuffer(pixelBuffer, options: nil, imageOut: &cgImage)

“`

ちなみにswift4.2では`options:`の引数名は省略可能です。

# CVPixelBuffer→UIImage

CVPixelBufferからCGImageに変換し、CGImageからUIImageを生成するExten

元記事を表示

【Flutter】【iOS】SimulatorでTextFieldを操作した時の画面フリーズを解消する方法【xcode】

#この記事を読んで習得できること
Xcode、FlutterでiOSアプリの開発をしている際に生じる、
TextFieldを操作すると画面がフリーズする問題を解消することが出来る
(つまずくとマジできついので備忘録として)

#結論

1.シミュレータの「ペーストボードの自動同期」のチェックをはずす
(Simulator -> Edit -> Automatically Sync Pasteboardをクリック)

![スクリーンショット 2020-08-16 7.02.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389553/43addc88-cc85-3bde-9442-9968cd3de1ac.png)

2.シミュレータアプリ自体を再起動
(command + qで簡単に消せるよ)

#どういうこと?
Flutterでいつものように、アプリの開発をしていた。
ログイン画面作らなきゃなーと思い、
「ユーザーID」と「パスワード」のTextFieldを作成。

デザイン的にもいい感じだし

元記事を表示

【SwiftUI】ListでForEachを回すときの注意

#はじめに
SwiftUI のListで削除メソッドを作るときにアイテムを削除すると、ForEachで回していたUIコンポーネンツがIndex out of range のエラーを吐き出したので治し方を共有しておきます

##問題のコード
“`swift
struct someView: View {
@State var animals: [String] = [“?”, “?”, “?”]
var body: some View {
List {
ForEach(0..

元記事を表示

iOS13でUICollectionViewCellの大きさがUIImageViewによってSelf-Sizingされてしまう問題

雑ですいません、自分用のメモです
何度もググってるので

ソースはこちら
https://stackoverflow.com/questions/56840665/why-on-xcode-11-uicollectionviewcell-changes-size-as-soon-as-you-scroll-i-alre

Xcode11でってなってますけど、iOS13でですよね?

![スクリーンショット 2020-08-16 3.19.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20784/eb916c9b-cd86-1f70-21db-277efa875a0f.png)

UICollectionViewのEstimate SizeがAutomaticになっていますが、これをNoneにします
これでUICollectionViewDelegateFlowLayoutのsize設定が効きます。

もちろんSelf-Sizingに対応してしまう手もあります(UIImageViewに縦横制約を設定

元記事を表示

UIPopoverのラベルがiOS13でズレる。

# 概要

訳あって、久しぶりに以前Objective-cで作ったアプリを新しいOSに対応させています。最後の更新はかれこれ2年弱前なのでiOS8だったかな?(確かめようと思ったらapp store connectにつながらない)

その割にはあまり警告もエラーもなくて思ったより作業は早く終わりそうな予感(あまいか?)。

いくつかありますが、結構時間がかかったやつあげておきます。話が古すぎてあまり刺さる人は少ないと思いますが、一人でも参考になればと思っての投稿です。

# 現象

多分、iOS11以降だと思うのですが、シュミレータでios9のipadだと問題ないのに、ios13のipadだとUIPopoverに配置したボタンのラベルがずれて表示されます。

ios9
![iPad_Air_2_—_9_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5336/e1990cfd-2c45-1fd3-9076-800ea72dc62a.png)

ios13
![iPad_Pro__11-inch__—

元記事を表示

[Swift] LT会の時、順番決めに困っちゃうので

タイトルのとおりです。
LT会をする際にいつも順番決めに困っちゃうので乱数で発表者を決めるコードをメモしておきます。

# 配列からランダムで値を取り出す。

配列からランダムで要素を取り出すには`randomElement()`を使います

“`swift
//memberはメンバーの名前が入ってます
member.randomElement()
“`

# 実装

“`swift
let member = [“Aさん”, “Bさん”, “Cさん”, “taisei”]

let randomMember = member.randomElement()

print(randomMember as Any)//memberから誰かがランダムで選ばれる
“`

はじめは`print(randomMember)`としていましたが`Expression implicitly coerced from ‘String?’ to ‘Any’`という警告が出てきました。
そのままfixを押して直しましたが一応調べました。以下の記事が参考になります。
https://teratail.

元記事を表示

【入門】iOS アプリ開発 #5【シーケンスの設計】

# はじめに

今回は画面モード内の処理シーケンスを作成していく。SpriteKit Manager を使用して、文字やキャラクタの表示・アニメーションを行う。パックマンの仕様書にあるスタートモードとクレジットモードは除き、完成イメージは以下の通り。

* アトラクトモード

> 『仕様書より』
>  ・モンスターキャラクター説明;逆転のデモンストレーション;得点表
>   パックマンがやられるまでのプレイデモンストレーションの2パターンが繰り返される。
>  ・電源投入時は、ハイスコアと 2UP の得点、ラウンド表示のくだもの類がない。
>  ・プレイ後は、最終プレイヤーの得点とくだもの類が表示される。

* プレイモード

【SwiftUI】 Listを使ってUITableViewをなくす!

#やりたいこと
・Listの背景色をつける
・削除可能にする
・タップ時のアクションを作る
・ContextMenu で長押し/3D Touch時のアクションを作る

#Listを作成
?、?、?の3つを表示する高さが 50 のList を作成します
`id: \.self ` となっているのは[この記事](https://qiita.com/titanium/items/d0e636fe6a17210605a8)で紹介しています

“`swift
struct someView: View {
@State var animals: [String] = [“?”, “?”, “?”]
var body: some View {
List {
ForEach(animals, id: \.self) { animal in
HStack {
Text(animal)
.padding(.all)

元記事を表示

Swift で数値を3文字区切りの文字列に変換する【コピペ 用】

Swift で数値をカンマで区切って表現したい時などには下記の Extension Property が使用できます。

“`swift
extension Int {
var withCommaString: String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.groupingSeparator = “,”
formatter.groupingSize = 3

return formatter.string(from: NSNumber(value: self)) ?? “\(self)”
}
}
“`

### NumberFormatter.Style

NumberFormatter.Style を使用するとデバイスのローカル言語に合わせて数値をフォーマットしてくれます。下記が公式ドキュメントにも記載してある US, France, China の例です。

元記事を表示

SwiftUI でShareSheet を表示する方法

#はじめに
SwiftUIを使い始めたのですがShareSheet を使う方法があまり見当たらなかったので備忘録的に共有します。

#とりあえずView を作る
とりあえずShareボタンとテキスト入力を作りました

“`swift
struct someView: View {
@State private var shareItem: String = “”

var body: some View {
TextField(“type something…”, text: $shareItem)
Button(action: {
// Action
}) {
HStack {
Text(“Share”)
Image(systemName: “square.and.arrow.up”)
}
}
}
}
“`

#ActivityViewをSwiftUIで使

元記事を表示

【Swift】 UIColor extensionに任意の色を定義する

#はじめに
ダークモードとライトモードで色が変わる、システムで提供されてる`UIColor`(`.systemBackground` 等) を自分で指定する方法がありましたので共有します

#UIColor Extension
UIColor を拡張して、以下のようなコードを書きます

“`swift
import UIKit
extension UIColor {
class var dynamicColor: UIColor {
get {
.init(dynamicProvider: { (traitCollection) -> UIColor in
switch traitCollection.userInterfaceStyle {
case .dark:
return .systemRed
case .light:
return .systemBlue

元記事を表示

【Flutter】GridViewを使って簡単に要素を横に羅列させよう【gridview】

#この記事を読んで習得できること
FlutterでGridViewを使って、要素をこんな感じに横に並べることが出来るようになる

![Simulator Screen Shot – iPhone SE (2nd generation) – 2020-08-15 at 14.14.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389553/e8c23166-f67d-2c44-15df-772188abf8ad.png)

#結論
こんな感じで書く

“`main.dart

…略

child: GridView.count(
padding: EdgeInsets.all(10), // 割と重要!ここでGridViewの位置を調整する
crossAxisCount: 4, // 一列に要素をいくつまで置けるかを指定
children: List.generate(

元記事を表示

[SwiftUI]actionやalertを2つ連続して使うときのハマりどころ

SwiftUIで`.action`や`.sheet`を使うときに、ハマってしまって時間を浪費してしまいました。その解決策のメモです。

## どのような問題か

下記のように`.alert`を2つつなげた場合、後のalertしか表示されませんでした。

“`swift
struct ContentView: View {

@State var presentAlert1: Bool = false
@State var presentAlert2: Bool = false

var body: some View {
VStack(spacing: 32) {
Button.init(“アラート1”) {
self.presentAlert1.toggle()
}
Button.init(“アラート2”) {
self.presentAlert2.toggle()
}

元記事を表示

【iOS】Pythonista3で共有シートを使う。

# はじめに
iOSの共有メニューからPythonista3のスクリプトを起動する方法のメモ。

# 共有メニュー
iOSには他のアプリにデータを受け渡すことができる共有メニューがあり、次のようなアイコンを様々な場面で見かけます。
share
これをタップすると出てくるメニューには、標準の**AirDrop**、**メッセージ**、**メール**の他にインストールされているアプリで**共有シート**に対応したアプリが並び、そしてその時の操作に対応した**アクション**も表示されます。
# Run Pythonista Script
**Pythonista3**をインストールすると、共有メニューの**アクションの欄**に**Run Pythonista Script**というメニューが追加されます。

この

元記事を表示

【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

元記事を表示

iOSのネットワーク接続状態の検出にはReachabilityよりシンプルなNWPathMonitorを使いましょう。

iOSでネットワーク接続状態の取得といえば`Reachability`を使うといった印象が強くありませんか。

`Reachability`を使うには、まず
https://developer.apple.com/library/archive/samplecode/Reachability/Introduction/Intro.html
からApple の提供しているサンプルコードをダウンロードして・・・なんて手間がありましたが、もっと手軽に利用できるApple標準のクラスがありました。

# 簡単にネットワーク接続のモニタリングが可能

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事