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

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

【超初心者向け】クロージャの書き方【swift】

##クロージャとは
swiftのLanguage Guideによると
>クロージャは、コードの中で渡したり使用したりすることができる自己完結型の機能ブロックです。

>中略

>クロージャは、それらが定義されているコンテキストから任意の定数や変数への参照を取得して保存することができます。これは、それらの定数や変数の上で閉じることとして知られています。

最近話題のDeepLに翻訳してもらいました。

##関数をクロージャにしてみよう!

以下の関数をクロージャで書いてみます。

・関数

“`swift
func closurePractice(num1: Int, num2: Int) -> Int {
return num1 + num2
}
“`

・クロージャ

“`swift
{ (num1: Int, num2: Int) -> Int in
return num1 + num2
}
“`

クロージャを使うと、このように処理を簡潔に記載することができます。

##クロージャをもっと簡潔に書いてみる
型推論を使うことで、データ型の記載を省略することが

元記事を表示

【AppStore申請】スクリーンショット作成

今回AppStore申請時に、スクリーンショットの生成ツールとして、[APPLAUNCHPAD](https://theapplaunchpad.com/)というツールを使用したので紹介。

## [APPLAUNCHPAD](https://theapplaunchpad.com/)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/5cdf9328-f6dc-c1bb-78fd-595a802b7dba.png)

## 作成した様子

iPhone7で撮影したスクリーンショットを基に、自動で各サイズのスクリーンショットを生成してくれ、流行りの感じの広告風の画像が作成できた。

無料だとテンプレートは限られるが、十分に使用できると感じた。

簡単に作成したのはこんな感じです。↓↓↓

![screencapture-theapplaunchpad-dashboard-ios-2020-03-24-07_27_48.png](https://qiita-image-stor

元記事を表示

Flutter iOS permission_handler 不要なパーミッションリクエストを削除する

[permission_handler](https://pub.dev/packages/permission_handler) は、Flutter用のアプリ権限プラグイン。 このプラグインは、権限をリクエストおよびチェックするためのクロスプラットフォーム(iOS、Android)APIを提供します。

このプラグインを導入すると、内部的にすべての権限のリクエスト処理があるためか、
アプリの送信を行うと、たくさんの権限のリクエストに関連した設定が不足として、has one or more issuesメールが送られきてしまいます。

加え、
**ビルドステータスが”バイナリが無効”に変更されました**
とされ、 App Store Connectへのアプリの送信が完了することができませんでした。

Missing Push Notification Entitlement あたりのみの場合であれば、無視できるのが通常ですが、これほどあるのはまずいようです。

使用しない権限の削除する方法について、[プラグインページ](https://pub.dev/packages/permissi

元記事を表示

FlutterでWidgetの位置とサイズを取得する

#FlutterでWidgetの位置やサイズを取得したい
検索しても地図上の位置を取得するのばっかヒットしてつらい

###GlobalKeyを使ってRenderBoxを取得する
[参考サイト:https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407](https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407)

“`dart:TestState.dart
//class TestWidgetは省略

GlobaleKey globaleKey = GlobalKey(); //←これが重要

class _TestState extends State{
@override
Widget build(BuildContext context) {
return Column(
children: [
E

元記事を表示

@Stateの値によって処理を制御する方法いくつか

# はじめに

`@State` で定義した値に変化が生じた際、それに応じて処理を挟み込むいくつかの方法です。

# 準備

デモ用に、文字列の末尾が3の倍数だったらアホになるExtensionを生やします。

“`swift
extension String {
var needsAho: Bool {
self.last
.flatMap { Int(“\($0)”) }
.flatMap { $0 % 3 == 0 } ?? false
}
}
“`

# 1. Computed Propertyを使う

– 一番シンプルな方法で、値に変化があると即時に反映されます

“`swift
struct ContentView: View {
@State private var inputText: String = “”
private var displayText: String {
inputText.needsAho ? “?” : “”
}

元記事を表示

AVSampleBufferDisplayLayerを透過する

特殊なケースですが、透過情報を持ったSampleBufferを`AVSampleBufferDisplayLayer`にenqueueしても、背景が透過されないことがあります。

これは`AVSampleBufferDisplayLayer`が透過できない訳ではなく、enqueueしたCMSampleBufferに透過情報があるかどうかのフラグが有効になっていないため起こる問題です。

次のようにSampleBufferに含まれるimageBufferに対して`kCVImageBufferAlphaChannelIsOpaque`フラグを落とせば透過が有効になります。

“`swift
imageBuffer.attachments.merge([kCVImageBufferAlphaChannelIsOpaque as String : false], mode: .shouldPropagate)
“`

元記事を表示

FlutterでSplashスクリーンを設定する

# SplashScreenとは?
アプリを起動させた時にアイコンが中央に表示される画面のことです。
これがあるだけで、大分アプリっぽくなりますよね?
![ダウンロード.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247084/fa4695d4-3440-e042-c182-d8f544b0da10.gif)
実装にはiOSとAndroidで異なる手順を踏まなくてはいけなくなるので、
それぞれについて説明していきます。

# iOS
iOSは比較的簡単な手順で済みます。
1. project/ios/Runner/Assets.xcassets/LaunchImage.imageset/配下に画像を保存
2. project/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.jsonを編集
以上の2つのみです。
### 画像を保存
この時、画像は1x, 2x, 3xの3つの倍率を用意しなければいけません。
カスタムで4xの倍率を用意し

元記事を表示

【iOS】AppStoreアプリ申請 Reject(リジェクト)例

アプリ申請をしてみたら以下のようなリジェクトがあったので、共有ついでに、対処方法ご存知の方いましたら、おまちしています。

ちなみに今回が初めての申請で、、とはいえとてもしょうもないアプリをテスト的に配布してみようかなと思ったので、コンテンツ不足とかは予測していましたが、、、

## リジェクト内容

“`
Hello,

We are unable to continue this app’s review because your Apple Developer Program account is currently under investigation for not following the App Store Review Guidelines’ Developer Code of Conduct.

Common practices that may lead to an investigation include, but are not limited to:

– Inaccurately describing an app or service
– Misl

元記事を表示

Kivy-iOS メモ

#Kivyとは?
python3 でiOSアプリやandroidアプリなどのUIを記述可能なライブラリ

#Kivy導入時に参考にした情報をまとめておく。
###導入
– https://qiita.com/sobassy/items/b06e76cf23046a78ba05
– https://github.com/kivy/kivy-ios
– https://qiita.com/tea63/items/c318ac7a1c09a78acab0

###pathの繋げ方(エラー出た人だけ)
-https://qiita.com/yoshinbo/items/8eb71d8015291ac6a3bc

元記事を表示

デフォルトTableViewサンプル集 【操作編】(swift)

# はじめに
[デフォルトTableViewサンプル集(swift)](https://qiita.com/am10/items/9bbbe794e88a96e5420e)これのセル選択や編集などの操作編です。

[サンプル集](https://github.com/adventam10/TableSample)

| 複数選択 | 複数選択 2 | 一部選択不可 | セル編集 |
| — | — | — | — |
| ![multi_selection](https://user-images.githubusercontent.com/34936885/77222594-0c131680-6b98-11ea-9b0d-06b3d6a0b718.png) | ![multi_selection_2](https://user-images.githubusercontent.com/34936885/77543310-dbf6ab00-6eea-11ea-96c1-df66da3069d5.png) | ![unselectable_parts](https://u

元記事を表示

swiftでキーボードの扱いが面倒なので「IQKeyboardManager」を使ったら神だった

swiftでテキストを入力したりするときにキーボードの操作もしなければいけないのがすごく面倒くさい。

何てったって

・キーボードを表示
・doneをクリックしたらキーボードを隠す

なのですが、これがよく忘れたりきちんと動かなかったり(俺が悪い)、ビルドしてから気づく。なんてことがあったので探してみたら速攻見つかりました。

## 使用感

簡単に使ってみましたがすごくいい。

## 参考
https://qiita.com/k-yamada-github/items/d4c791424ead414e3142

元記事を表示

SwiftUIのPreview実装をそのまま使って、Screenshot撮影を自動化する

# はじめに

SwiftUIのPreview機能を活用して、実装したPreview用のコードをそのままScreenshot撮影自動化に利用できる方法の紹介です。
わざわざテスト用のコードを実装することなく、既存の記述をほぼそのままCIとして組み込めるので、かなり簡単に対応できると思います。
これを使って、画像diffから意図しないUI変更を検知したり、簡単なUIカタログのようなものを作ることもできます。

# 完成形

先に完成形を記載しておきます

### Previewの実装

“`swift
struct ContentView_Previews: PreviewProvider {
// Previewableに適合したenumを定義して、previewプロパティで状態に応じたViewを返すだけです
enum Context: String, Previewable {
case red
case green
case blue

var preview: some View {

元記事を表示

AuthKeyを利用してコマンド(curl)でPushテストする

## メモ書き

簡単にPushテストできる方法をメモしておきます。

下記のスクリプト叩くだけ

“`
/bin/bash push_test.sh
“`

deviceTokenはこんな感じで事前に取っておく。

“`swift:AppDelegate.swift

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
var token: String = “”
for i in 0..

元記事を表示

iOSのiPhone端末別サポート状況(〜2020/3 & 〜iOS13)

頻繁にわからなくなるので、まとめました。
間違えありましたら、指摘or修正リクエストお願いします。

# 表

| 端末名 | iOS ver
(工場出荷状態) | iOS ver
(最終サポート) |
| —- | :—-: | :—: |
| iPhone | 1.0 | 3.0 |
| iPhone 3G | 2.0 | 4.0 |
| iPhone 3GS | 3.0 | 6.0 |
| iPhone 4 | 4.0 | 7.0 |
| iPhone 4S | 5.0 | 9.0 |
| iPhone 5 | 6.0 | 10.0 |
| iPhone 5c | 7.0 | 10.0 |
| iPhone 5s | 7.0 | 12.0 |
| iPhone 6 / 6 Plus | 8.0 | 12.0 |
| iPhone 6s / 6s Plus | 9.0 | – |
| iPhone SE | 9.0 | – |
| iPhone 7 / 7 Plus | 10.0 | – |
| iPhone 8 / 8 Plus | 11.0 | –

元記事を表示

Xcode11以降でfastlane matchで証明書を更新してはまったこと

Xcode11でfastlane matchで証明書を更新してから以下のようなエラーがでてビルドできなくなりました。

`Provisioning profile xxxx doesn’t include signing certificate yyyy`

## 原因
生成された証明書を確認してみるとCertificate Typeが以前は`iOS Development`だったものが`Development`に変わっていました。
Screen Shot 2020-03-24 at 10.53.00.png

違いが何なのか調べてみると、これまでは`iOS Developer`や`iOS Distribution`だったものが、Xcode11以降で`Apple Development`, `Apple Distrib

元記事を表示

iOS13のautomaticモーダルからfullScreenに横遷移する

![](https://i.imgur.com/C0oMcUd.gif)

こーゆう遷移をする方法を紹介します。

## 前置き

macOS 10.15.x
Xcode 11.2.x
iOS 13.x

画面遷移について、iOS13から通常のモーダル表示(下から表示)が、
ちょっと立体的な `.automatic` 表示になりました。

.automatic | .fullScreen
— | —
|

iOS12以前は通常が.fullScreenでしたね。
.fullScreenで表示したい場合は、
ちゃんと指定するようにしなければならなくなりました。

“`swift
let viewController = xxx
let navigationController = UINavigationController(rootViewControll

元記事を表示

flutterアプリを実機でビルドする時にハマったこと

# なんかビルドエラーがやたらめったらでる
環境を移動させてから、ライトニングtoタイプCケーブルが届くまで実機テストができなかったのですが、届いたので、試してみたのですが、どうもうまくいかないのですね。

“`
$ flutter run -d DEVICE_ID
.
.
.
Could not build the precompiled application for the device.

Error launching application on sticky-fingers.
“`

## 下記の方法でも解決できず

“`
$ flutter clean
“`

“`
$ pod install
“`

## 解決策
一旦cocoapodsを削除してから、再インストールすると、ビルドができました。

“`
$ pod deintegrate

$ pod install
“`

元記事を表示

【XCode:エラーの読み方】exceptionPreprocess ってなんだろうって調べたら

### はじめに

iOS のシミュレーター上でどうやらこのようなException が吐き出されたらしい。
となった時

#### 動作確認環境

iOS12シミュレーター
Xcode11.3

これりゃなんだろう??

~~~:Log

Failed to set (kerning) user defined inspected property on (UILabel): [ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key kerning.

*** Terminating app due to uncaught exception ‘NSRangeException’, reason: ‘*** -[__NSArrayM objectAtIndexedSubscript:]: index # beyond bounds for empty array’
*** First throw call stack:
(

元記事を表示

Flutter iOSでGenerated.xcconfigが読み込めない場合の解決策

FlutterでiOS用にFlavorを追加した際に、Schemaは正常に追加できるものの、自作のxcconfigからGenerated.xcconfigをimportしようとしたところ、xcodeでrunした際に、Generated.xcconfigが見つからない旨のエラーが出ていました。
このままでは開発環境情報をハードコーディングする羽目になってしまう、と困っていたところ、英語で解決策が乗っているサイトを見つけました。

Different build configurations in iOS/Xcode won’t run app from Flutter

「コピーは絶対するな。新しいxcconfigファイルが置かれているフォルダを確認しろ。」
ということでxcconfigが置かれているフォルダを確認したところ、一つ階層がずれていることに気づきました。
最初Flutterのバグかと思っていましたが、ただのケアレスミスでした。
これで、今の所iOSでもFlavorは十分使えるようになりました。
今後気を付けたいと思います。

元記事を表示

[IPhone]で使えるGitHubアプリを比較してみた

# スマホでGithubを使いたい
## 対象読者
– githubを使い始めた方
– IOSブラウザで使うGithubに不満を感じている方

# はじめに
最近Githubを使い始めたものです。ウェブ上でバージョン管理できるのは非常に便利ですね。最近では、コードだけではなく簡単なメモ等もマークダウンで書いて使ったりしています。そこで出先や隙間時間にさっき書いたメモを見たいなと感じたときに携帯のウェブページにアクセスするのですがスマホでみるには適していないように感じます。そこで、App StoreでGithubアプリを探したところいくつか見つかったので今回はそれらの特徴を簡単にまとめました。

# Github公式アプリ
まずは[公式アプリ](https://apps.apple.com/jp/app/github/id1477376905)からダウンロードしました。
アプリを起動した感じでは、Iphoneの設定画面に似ている感じがあります。ウェブページから閲覧するのに比べRてアイコン等が大きく操作性は非常によいと感じました。
また、ダークモードに対応しているので夜間に目の負担を軽

元記事を表示

OTHERカテゴリの最新記事