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

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

UIAppearanceの優先度

# UIAppearance の基礎
これですべての `UILabel` の `textColor` が茶色に変わります。
(現実的には `UILabel` の `textColor` を `UIAppearance` で設定するのは稀だと思いますが、あくまでサンプルとして)

“`swift
UILabel.appearance().textColor = .brown
“`

# 特定のView上にあるUILabelのtextColorを変える
## View階層が1つだけの時
すべての `ViewA` 上の `UILabel` を変えたいなら、こんなふうに書けば良いですね。

“`swift
UILabel.appearance(whenContainedInInstancesOf: [ViewA.self]).textColor = .red
“`

## View階層が2つ以上の時
`SampleViewController` 上の `ViewA` 上の `UILabel` だけを変えたい時など、
階層が2つ以上の時は、対象となるViewから親View/View

元記事を表示

iOSのショートカットでなうぷれを作る

#
今回はAppleMusicアプリで再生中の曲情報をなうぷれとしてTwitterに投稿するショートカットを作成します。

# デモ
– [NowPlaying](https://www.icloud.com/shortcuts/59379fdb210448c993b37cceff9e6da1)

# サンプル
![1581603408.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254789/adb94565-96b1-6163-8d6c-45b0810e82f5.jpeg)

元記事を表示

Can’t end BackgroundTask:のエラーについて

Can’t end BackgroundTask: no background task exists with identifier 1 (0x1), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.

キーワード
UIApplicationEndBackgroundTaskError

iOSのログに出ていたエラーについて
このエラーが最近特に気になるのですが、何が原因で起きてるのかわからなかったので調べてみました。

XcodeのバージョンはXcode11
OSはiOS13の実機、シミュレーションです。

アプリをバックグラウンドに移行させた時にエラーが出る。

調べた結果
Apple開発者フォーラムのによると
https://forums.developer.apple.com/thread/121990

### iOS 13.0で「BackgroundTaskを終了できません」エラーメッセージ

> BackgroundTaskを終

元記事を表示

iPadでもSwiftUIで遊べるドン!

こちらの記事で、XcodeのPlaygroundでSwiftUIが書ける旨が解説されていますが、iPadでも可能です。外出時に思いついたコードを試すなど、とても良さそうです。
https://qiita.com/shtnkgm/items/387132cd9633a59e7390

軽くサンプルのスクショ載せて解説します。忘れた時に参考できるような形です。

![515A5131-FD09-46BC-A0C6-FB413BCB34DB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114709/b8b33e7b-fd88-a39f-807b-48e44e83e80c.png)

# ポイント UIHostingViewControllerを使う
XcodeではPreviewProviderでプレビューを見る事ができますが、Playgroundにプレビューはありません。なので、UIKitの時にもPlaygroundでViewを検証するのに使っていたPlaygroundSupportのモジュールを利用します

元記事を表示

各OSのBluetoothの仕様

# 各OSのBluetoothの仕様

[iOS](https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf)

場所
>25.5 Advertising Interval
The accessory should first use the recommended advertising interval of 20 ms for at least 30 seconds.
If it is not discovered within the initial 30 seconds, Apple recommends using one of the following longer
intervals to increase chances of discovery by the device:
● 152.5 ms
● 211.25 ms
● 318.75 ms
● 417.5 ms
● 546.25 ms
● 760 ms
● 852.5 ms
● 1022.5 ms
● 1285 ms

>推奨

元記事を表示

BleManager option

# BleManageroption

[BleManager](https://github.com/innoveit/react-native-ble-manager)

スキャンoptionでconnect成功率、速度向上できます

## Android

まずAndroidじゃ!

– scanningOptions – JSON – [Android only] after Android 5.0, user can control specific ble scan behaviors:
– numberOfMatches – Number – corresponding to setNumOfMatches
– matchMode – Number – corresponding to setMatchMode
– scanMode – Number – corresponding to setScanMode
– reportDelay – Number – corresponding to setReportDelay //

元記事を表示

AIに歌わすのは大変すぎる。

#AIに歌を歌わせてみた。
最近はVocaloidやVtuber等良い声が出るAiがありますが、自作できないのか探求しています。

“`SpeakingOS.cpp
static constexpr auto DO = “ド”;
static constexpr auto RE = “レ”;
static constexpr auto MI = “ミ”;
static constexpr auto FA = “ファ”;
static constexpr auto SO = “ソ”;
static constexpr auto RA = “ラ”;
static constexpr auto SI = “シ”;
int main(void){
return NULL;
}
“`

## `TITLE`残業はなくならず
`歌詞`
残業はなくならず,国は捨てる
気持ち悪くなるだけ,悪くなってしまった
闇にいーる,疲れにやられてて,窓から見えるいつもの街灯を探した,わかってる
労働争議するわけでもなくて君と文句いうこともない
かつてと違うことは1つ,生きる勇気を失ってしまった
残業

元記事を表示

Swift Stateとはなんぞや1コマ劇場

#はじめに

自分のSwift学習メモです。
1枚のメモ用紙に、その宣言や使い方のざっくりしたイメージを記録していきます。

#対象とする読者
自分
SwiftUI初心者

#環境
私がこの記事を書いている際に利用しているのは次の環境です。
Xcode 11.3.1
Swift 5.0

#`@State`を1枚で説明すると
![@State.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187991/c27bd16f-4486-58e5-3cef-1779f976a04b.png)

#解説
変数に`@State`をつけることで、State構造体という特別な場所に変数は格納されます。そして、この変数の値が書き換わるたびに、State構造体に定義されているupdate()が呼び出され、関連する各Viewの再表示が行われます。
状態変更による個別Viewの再表示イベントの実装から解放される模様。

元記事を表示

作りながら学ぶ! SwiftUIアニメーション インジケーター編

# はじめに

作りながら学ぶ! アニメーション インジケーター編です。

完成するとこのようなアニメーションになります。
![ylcjk-49v22.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171702/a7a7976c-45ce-cccc-2840-a341d7b30ac5.gif)

## 作ろう

### 円を作る

まずは土台となる円を作ります。

“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
Circle()
}
}
“`

スクリーンショット 2020-02-04 13.28.00.pngプログラミング初心者がSwiftでマルバツゲームのiOSアプリ作ってみた

#はじめに
研究室の同期たちとの第三回ハッカソンが開催されたのでその記録。
他のメンバーの記事はこちら。
[指定したユーザーのツイートをしゃべるRaspberry Piの作り方](https://qiita.com/hayashi1989/items/dabd1a4f7b747ef7c4e1)
[位置情報を使ってSlackのステータスを更新してみた](https://qiita.com/Rtakaha/items/63b54c45c9e544ac878e)
はじめはtemiロボット用のアプリを作ろうと思ったが、色々うまくいかず断念…
そこで、今回は研究用にiOSアプリを作るためなんとなくSwiftを勉強した記憶を思い出しつつ何か作ってみる。
今回は、夏に作りかけていた簡単なマルバツゲーム:o::heavy_multiplication_x:を完成させて、追加要素としてマルバツゲームの盤面のベクトルを変更できるようにしてみる。

以下のサイトが参考になった。
[Swiftで初めてiPhoneゲーム開発する人向チュートリアル(マルバツゲームを例にStep by Step解説)](htt

元記事を表示

[iOS]カスタムドキュメントのサムネイルを表示する – Thumbnail Extension

こんにちは。
@gachalatteです。

今回は、カスタムドキュメントのサムネイルを表示する`Thumbnail Extension`を紹介します。`Thumbnail Extension`の実装は難しいものではありませんが、インターネットで検索してもほとんど情報が得られない状況ですので、ここにまとめておきます。

[前回の記事](https://qiita.com/gachalatte/items/b5a7839cb53eb34415d2)とあわせてご覧ください。

# プロジェクトにThumbnail Extensionを追加する

1. Xcodeのメニューから、`File` > `New` > `Target…`を選択します。
2. `Application Extension` > `Thumbnail Extension`を選択します。
3. `Product Name`に`ThumbnailExtension(任意)`を入力します。

![プロジェクトを追加](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

【Swift】Storyboardとsegueを利用しないデータをパスする方法~~ Pass data without segue in Swift

本記事はSwiftを勉強する時個人的なメモとします.役に立てればうれしいです.:grinning:
本に書いてあるデータをパスする方法の多くは Storyboard 上から線を引いて,”Identifier” に名前をつけてから segue によりデータをパスする方法となっています.

##UserDefaultsを使用たデータパス
UserDefaults はローカルにある軽いデータを記憶するのによく使われる.例えばユーザーが入力したIDやパスワードを記憶するため使うのが便利である.手軽にデータの永続化ができるため、多くの場面で利用される機能です.

対応できる型は**Int,Float,Double,BOOL,Array,Dictionary,**そして**Any**も対応可能です.

> :bangbang:注意:UserDefaults を利用して大量なデータを保存することはおすすめしません.
UserDefaults に保存されたデータは .plist ファイルの中に格納するため,理論上 UserDefaults に数GBのデータを保存することができるが,アプリを起動するた

元記事を表示

[Swift5]ビリビリ動画にあるようなリフレッシュする際にGIFアニメーションを見せるビュー

# はじめに
TableViewを引っ張ってリロードすることを**リフレッシュ**と呼びますが、
リフレッシュする際にアニメーションを見せることにより、**ユーザが待ち時間に感じる退屈**を防ぐことができます。
実際に中国大手の動画共有サイト「bilibli」のスマホアプリでも取り入れられています。
(筆者はbilibiliの**世界観を創り出すUI**をとても気に入っており、UIに困ると再現して取り込んでしまっています。)

この記事ではリフレッシュする際にGIFアニメーションを見せるTableViewの作り方を共有したいと思います。

# 目次
– 環境
– 実行例
– 考え方
– 画面の構成
– ロード時に画面を固定して見せる
– GIFアニメーションを表示する
– UIImageViewをロード時に固定表示し、処理後に初期状態に戻す
– ソースコード
– おわりに

# 環境
– Xcode 11.2.1
– Swift5
– [SwiftGifOrigin 1.7.0](https://github.com/swiftgif/

元記事を表示

SAP CP Mobile Services (Cloud Foundry) のPush通知APIを叩いてみた

# はじめに

この記事は[「SAP S/4HANAで購買発注が登録されるたびiPhoneに「アイーン」とPush通知が来たらぜったいどきどきしちゃう」シリーズ](https://qiita.com/monamona/items/0e4c38ce315282e73b96)の2つ目の記事です。

## 前回までの実装

[前回の記事](https://qiita.com/monamona/items/a1b065ca245aa5d8b2be)では、「SAP S/4HANAで伝票登録されたら「あい〜〜ん」Push通知が来たらぜったいどきどきしちゃう」という奇特な業務ユーザからの要望をかなえるべく、SAP Cloud Platform (Cloud Foundry) Mobile Servicesから「アイーン」というPush通知を受け取れるiOSアプリを構築してみました。

このアプリをS/4HANAのプロセスと統合するためには、なにはともあれAPIを活用してこの「アイーン」通知機能を呼び出すことが必要になります。

そこで今回は、**Mobile Servicesの[Push API](

元記事を表示

SAP S/4HANAで購買発注が登録されるたびiPhoneに「アイーン」とPush通知が来たらぜったいどきどきしちゃう(まとめ)

# README

この記事は「SAP S/4HANAで購買発注が登録されるたびiPhoneに「アイーン」とPush通知が来たらぜったいどきどきしちゃう」シリーズのまとめ記事です。このシリーズでは、その名の通りSAP S/4HANAでの伝票登録をトリガーにiPhoneにPush通知を送信するための諸々の構築方法について説明しています。

複数に分割して書いた記事へのリンクをこの記事にまとめておくことにします。

# INDEX

実装方法をまとめた記事は下記の4つです。
(もしもやってみたい人がいれば)一応上から順番にやっていけばだいたい実装できるようになっていると思います。

1. [とりあえず「アイーン」とpush通知してくれるiOSアプリをSAP CP Mobile Service (Cloud Foundry) を活用して実装してみた](https://qiita.com/monamona/items/a1b065ca245aa5d8b2be)

2. [SAP CP Mobile Services (Cloud Foundry) のPush通知APIを叩いてみた](https

元記事を表示

Fastlaneのframeitでunexpected token at {….っていうエラーが出る件

Fastlaneを最新版にしてframeitでApp Store用のスクショを作ろうとしたら変なエラーがでた。

スクリーンショット 2020-02-11 18.17.40.png
なんか文字列がjsonにパースできないらしい。吐き出されてた文字列をコピーしてJson validatorにかけると以下の場所がおかしいことがわかる。
スクリーンショット 2020-02-11 18.21.49.png
Fastlaneのほうではちょうど1週間前にiss

元記事を表示

Swiftの記号あれこれ

#背景
Swiftの公式ドキュメント、ヘルプガイド、ブログのコードサンプルなどによく出てくる実装のなかで、どんな意味があるのかすぐに判断できない記述がありました。
メソッドの引数が顔文字化していたり(例えば、`max(:_:_)`とか)、変数定義の型の最後にに`?`や`!`が付いていたりと、あれ?これはどういう意味だったかなというときに自分自身がすぐに思い出すとき用の記事があるといいなぁと思い記事にしました。

#対象とする読者
Swift初心者

#環境
私がこの記事を書いている際に利用しているのは次の環境です。
Xcode 11.3.1
Swift 5.0

#Swiftの記号あれこれ

###関数の引数に出現する_ (アンダースコア)

Swiftでは関数の引数にラベルをあらかじめ付けておき、利用者にそれを明確に指定させることができるが、名前をわざわざ指定しなくても明らかにわかる場合は、その仕組みだとコードが読みにくくなってしまいます。
なので、関数呼び出しするときの引数が、名前なしで渡せますよということを明示するもの。

“`swift
// 引数に名前付きで呼び出してもらう

元記事を表示

Flutter プラットフォーム固有機能を利用するためのSystemChannels APIについて

# はじめに

Flutterからプラットフォーム固有の機能を利用するためのAPIの[SystemChannels](https://api.flutter.dev/flutter/services/SystemChannels-class.html)について解説します。

## SystemChannelsとは

まず最初に、基本的にこのAPIを使うことは推奨しません。Flutter Framework内部ではこのAPIを多用していますが、以下のように中間レイヤのAPIであるため今後のバージョンアップで変わる可能性が高いです。

SystemChannelsの[ソースコード](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/services/system_channels.dart)を見ると、中身はMethodChannel, EventChannel等を利用していることが分かると思います。MethodChannelやEventChanne

元記事を表示

【Unity】iOSでセーブデータを読み書きする

#概要
UnityでiPhoneの実機テストをした時に
ファイルの読み書きにつまづいたのでメモを残します。
#環境
Unity 2019.2.10f1
Xcode ver.11.3.1
iOS 13.2
#サンプル
###データ
“`C#
[System.Serializable]
public class SaveData
{
public int stageNum = 3;
public int[] score = new int[stageNum];
}
“`
jsonなので配列も扱えますね。
###セーブ
“`C#
public void Save(SaveData data){
StreamWriter writer;
string jsonData = JsonUtility.ToJson(data);

writer = new StreamWriter(Application.persistentDataPath + “/savedata.json”, false);

元記事を表示

今からスマホアプリの学習をしようとしてる人に向けて!

##1. はじめに
私は新卒でITベンチャーに入社して、現在スマホアプリのフロントエンドエンジニア(※以下 アプリのフロント)として、
Android、iOS共に、主にECアプリなどを開発しております。
そんな私がスマホアプリの学習をしようか検討中の方に向けて、「**アプリのフロントはこんな感じ**」というのを共有させていただければと思い記事にしました。

##2. スマホ開発の仕事はある?
学習するか悩んでる言語がある方の多くは、「その言語を学んでも仕事が無いんじゃ意味がない」と思っている方だと思います。
確かに「仕事がない」=「必要とされていない」と言っていいと思うので、これから学習する言語は仕事が多く取れる言語が良いですよね。
その点、**スマホのエンジニアは仕事がある**と私は胸を張って言えます。
これは「勤めている会社の中で仕事があるから」「自分がやっているから」というだけが理由ではありません。
私は趣味で英語の勉強会に行くのですが、その際職業の話になりアプリを作っていることを話すと、
結構な確率で「こういうサービスを考えているんだけど…」と相談されます。
今、何かサービスを

元記事を表示

OTHERカテゴリの最新記事