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

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

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/

元記事を表示

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

元記事を表示

【Swift5】UIActivityIndicatorViewの実装,UITableView画面でぐるぐる回る~~

## この文章のデモはこのようになる
本記事はUIActivityIndicatorViewの使い方を勉強する個人的メモとします.役に立てればうれしいです.

UIActivityIndicatorViewは下図のようなぐるぐる回るやつです,
Web経由のデータリクエストや重い処理でロードするときによく使います
![687474703a2f2f692e696d6775722e636f6d2f344861624448612e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427494/276db7ad-c946-58bc-8e6f-ab59375631b6.gif)

#実装方法
こんな感じで簡単に実装でき

元記事を表示

[iOS]バックアップ機能のよくない方式とよりよい方式

はじめまして、@gachalatteと申します。

個人でiOSアプリの開発をしています。先日、[Firevault][]というパーソナルデータベースアプリをリリースしました。よろしくお願いいたします。

今回は、[Firevault][]を開発するにあたって他のアプリの調査をしてきた中で、バックアップ機能の実装方式について感じたことを共有してみようと思います。

※この記事では手動でのバックアップ機能について取り上げます。

#バックアップ機能
たとえば日記アプリや家計簿アプリなど、ユーザーのコンテンツを記録するアプリにはバックアップ機能が不可欠です。iOSの機能で全体をバックアップ・復元することはできますが、今のユーザーはそれでは満足してくれないでしょう。バックアップ機能が備わっているかどうかはアプリをダウンロードするかどうかの判断基準のひとつにもなり得ます。実際、調査したアプリのほとんどがバックアップ機能を搭載していました。

バックアップ機能では、バックアップファイルをデバイスの外部に保存することが必要条件となります。この記事ではバックアップファイルを外部に保存する方法につい

元記事を表示

【iOS】UITextViewに埋め込めるリンク3種類の紹介

以下の3種類のリンクを紹介。
[1] ブラウザでインターネット上のURLを開く
[2] アプリ内の特定のページを開く(好きなコードを動かせるので、実際はなんでもできる)
[3] 外部アプリを開く

**例えばこういう時に使えます!**
[1][2] 規約やポリシーへの同意を求める文面で、青い部分をタップした時にウェブやアプリ内の該当ページを見せたい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272677/3a028b12-de9f-6572-8f0c-48bd65cb6a40.png)
[3-A] カメラ等の利用許可を得るために、設定アプリを開かせたい。
[3-B] 住所・施設等の紹介ページに、マップアプリを開くリンクをつけたい。

# 1. インターネット上のURLへのリンク
基本です。
AttributedStringで文章を作り、rangeを指定して`.link`Attributeを付与。
その後、textViewのattributedTextに設定。

“`swift:V

元記事を表示

Share Extensionのハマりポイント

# はじめに
[初の個人アプリを App Store に審査出したら 30 分足らずでリリースされてビビったからその全てをお伝えします](https://qiita.com/lovee/items/67906ec593ebd91d608d)の記事を見てShare Extensionいいなぁと思い[自分のアプリ](https://qiita.com/am10/items/3ecac20451c82133e900)にもつけてみよう!と思ったのですが色々ハマりました…

# 対象
* iOS13.0以上
* macOS Catalina

# Share Extensionの実装
[ここ](https://qiita.com/lovee/items/67906ec593ebd91d608d#share-extension-%E5%AF%BE%E5%BF%9C)を参考に実装をしました。

Share Extension の追加自体は簡単でした。

`ShareViewController` の POST 機能とかいらなかったので参考記事に書いてあったように下記のように修正して画面を作成しま

元記事を表示

ARKit 3のMotion CaptureでVRMを動かすために、関節の回転差分を計算する

# 前置き

ARKit3では、これまでの表情のキャプチャに加えて全身の姿勢や関節の回転を推定するモーションキャプチャが実装されました。
モーションキャプチャの簡単な解説は、WWDCの「Bringing People into AR」が分かりやすいです。

**Bringing People into AR**
https://developer.apple.com/videos/play/wwdc2019/607/

ARKit3 のモーションキャプチャでは、91点の関節を認識し3Dアバターの動きと同期することができます。

スクリーンショット 2020-02-09 18.03.09.png

動きを同期する上で一番簡単な方法は、各関節ノードの名前とtransformが指定された値になったアバターを利用することです

元記事を表示

Google Maps SDK for iOS で経路案内を実装する

# はじめに

Google が提供している Directions API と Google Maps SDK for iOS を使用して現在地から目的の場所までのルートを表示してみたいと思います

ドキュメントは[こちら](https://developers.google.com/maps/documentation/directions/start?hl=ja)

# 開発環境

Xcode:11.1(11A1027)
Swift 5
iOS:13.1

# 実装

こちらの [Google Maps SDK for iOS で現在地を表示](https://qiita.com/nwatabou/items/38f4240582d70a4d84a8) の続きから記載しています

## モデルの作成
まず、経路検索APIのレスポンスをパースするための struct を定義します

### Directions API のレスポンス形式
経路検索APIのレスポンス形式は以下のようなものになっています

“`json
{
“status”: “OK”

元記事を表示

[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Strategy/State~

この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。

**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)

# Strategy/Stateパターン概要

– 条件によって違う処理内容を外部クラスに追い出し、どのクラスを使うかを実行時に選択するパターンです。
– 具体的には、**switch文の「caseが多い/caseごとの処理内容が濃い」場合に、caseごとにクラスを分離させる**ことが多いと思います。
– **「ユニットテストしやすく」「拡張がしやすい(影響範囲を限定できる)」というメリットがあります。**
– GoFのデザインパターンでは**振る舞いに関するパターン**に分類されます。
– StrategyとStateは設計として

元記事を表示

Xcode 11.4アップデートまとめ!

## Xcode11.4 Betaが開発者向けに公開された。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470777/552260af-3079-675a-a225-0a5e8d9e8504.png)

### [Relese Note](https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_beta_release_notes)

## 変更
– macOS Catalina 10.15.2以降を実行しているMacが必要。
– iOS 13.4, iPadOS 13.4, tvOS 13.4, watchOS 6.2, macOS Catalina 10.15.4に対応したバージョン。
– IBで制約をつける際に0を入力して「Standard」になるバグを修正

## 新規
– Swift 5.2にアップデート
– SSLの証明書をシミュレーターにたいして`ドラッグ&ドロップ`でインストール

元記事を表示

CarthageでChartsを導入してみる

Carthageでグラフ描画ライブラリ[Charts](https://github.com/danielgindi/Charts)を導入したときのメモ。
はじめてのCarthageだったので、その導入から。

## インストール

“`
$ brew install carthage
“`

## Cartfile作成

“`
$ cd path/to/repository
$ code Cartfile
“`

“`text:Cartfile
github “danielgindi/Charts” == 3.4.0
“`

## ライブラリをビルド

“`
$ carthage update –platform iOS
“`

`Carthage/Build/iOS/` にビルド成果物があれば成功。

“`
$ ls ./Carthage/Build/iOS/
059E4A44-BC91-38F6-B36D-D72B91FDE6E5.bcsymbolmap
5A112AED-A5E6-34A0-9C82-74EF7032628F.bcsymbolmap
Cha

元記事を表示

OTHERカテゴリの最新記事