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

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

MapKitで国土地理院のタイルデータを表示する

iOSの `MapKit` は地図の上にデータをオーバレイすることができます。
一方、国土地理院では[日本地図に関わる様々なデータを公開](https://maps.gsi.go.jp/development/ichiran.html)しているのですが、実は簡単に `MKMapView` へ表示することができちゃいます。

スクリーンショット 2020-07-09 11.17.48.png

“`swift:ViewController.swift
import UIKit
import MapKit

class ViewController: UIViewController {

@IBOutlet weak var mapView: MKMapView!

// 国土地理院が提供する色別標高

元記事を表示

(明日も更新予定) たった数行のコードで作成できる iOS 14 の新たなフレームワークの機能

## 1、 App Store アプリの概要カードをフロート表示する

アプリ内で他のApp Storeアプリをおすすめしたい場合、5行のコードで簡単にアプリの概要カードを表示することができます。

image.png

“`swift
if let scene = view.window?.windowScene {
let config = SKOverlay.AppConfiguration(appIdentifier: “1494658162”, position: .bottom) //App Store アプリのApple ID
let overlay = SKOverlay(configuration: config)
overlay.present(in: scene)

元記事を表示

iPhoneアプリが待機中のままダウンロードできない

私のiPhoneXでは、wifiルーターの変更などで新しい
ネットワークに接続した際、iPhoneアプリの
ダウンロードが全く進まないという現象が起きます。

app storeアプリを起動→右上の人のシルエット
一番下までスクロールして「サインアウト」
再びサインインするとダウンロードが進みました。

元記事を表示

Carthageで使うXcode・Swiftのバージョンをコントロールする

最近複数の仕事をしていて、Xcodeのバージョンをいくつか使っているんですが
carthageでライブラリーアップデートしてSwiftバージョン違うって言われると辛いですよね
あれめちゃくちゃ長いんですよ
1日溶ける

# 本題

バージョンが合っていないとこういうエラーが出てきます

“`
:0: error: module compiled with Swift 5.2.4 cannot be imported by the Swift 5.1.2 compiler: /Users/XXXXX/ios/yyyyyy/Carthage/Build/iOS/Hoge.framework/Modules/Hoge.swiftmodule/x86_64-apple-ios-simulator.swiftmodule
“`

現在使っているXcodeを確認する

“`
xcode-select –print-path
“`

変更する

“`
sudo xcode-select –switch /Contents/Dev

元記事を表示

NavigationControllerで戻る画面を自在に書き換える

NavigationControllerを利用したページ移動をしていて、戻るページのスタックを自分の好きなように書き換えたくなった時があった。2ページ前に戻るとか、ある条件を満たした時だけ戻れるページの上限が変わるなど。

## NavigationController.viewControllerの仕組み
“`Swift
navigationController?.viewControllers // [1pページ目, 2pページ目, 3pページ目, 今のページ]
“`

NavigationControllerは上記のような感じで配列としてこれまで遷移したページを持っている。
基本的にはこれをpopしたりpushしたりする事で1画面遷移する。

## ViewControllerが入った配列
ViewControllerが入った配列なので、この配列を好きなように操作してやれば戻るページを書き換えられる。

ただ、基本的にはスタックとして使う事を想定しているはずなので行儀は良くない気がする。

## 例
UIViewControllerクラス内で

“`Swift
let f

元記事を表示

Mobile Safari は再起動時に POST リクエストする場合がある

Rails アプリケーションで、iPhone の Safari からのリクエストでだけ `ActionController::InvalidAuthenticityToken` 例外が発生するので調査していたところ、Mobile Safari は再起動後、開いていたタブをロードする際に、POST リクエストで得たページであっても再度リクエストを送信しているらしいことがわかった。

※ iOS 13.5.1 の iPhone 11 で検証

# 検証方法
下記の Ruby スクリプトを作成して `ruby server.rb -o 0.0.0.0` で起動

“`ruby
# gem install sinatra が必要
require “sinatra”

html = <<~HTML



HTML

get “/” do

元記事を表示

Danger用にxcpretty-json-formatterで テストを実行して ld: symbol(s) not found for architecture x86_64 になった時に対応したこと

## 前段
– BitriseのWorkflow内でDangerを回している
– danger-xcode_summaryを利用
– xcpretty-json-formatterも利用
– Bitriseの`XcodeTest for iOS`は利用せずスクリプトでテスト実行
– FirebaseはCocoaPodsで入れる
– Xcode11.3.1, CocoaPods1.5.3, FirebaseCore6.6.6

## 現象

xcpretty-json-formatterの出力を指定した以下のスクリプトでテストビルドを実行

“`shell
set -o pipefail && env “NSUnbufferedIO=YES” xcodebuild -workspace $WORKSPACE -scheme $SCHEME \
clean build test -destination “platform=iOS Simulator,name=iPhone Xs,OS=12.4” \
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_

元記事を表示

UIKitに依存するSwift PackageをVSCodeで開発する

~~Xcodeがクソすぎて~~**VSCodeが好きすぎてSwiftのコードを書くのにもVSCodeを使いたい!**
と思って調べてみたところ、どうやらSwift PackageのプロジェクトならVSCodeでもそれなりにコード補完できるようになる、ということがわかりました。

こちらにあるのがApple公式の[sourcekit-lsp](https://github.com/apple/sourcekit-lsp)(Swiftの構文補完のためのLanguage Server)リポジトリで、中を見ると[VSCode用の拡張機能](https://github.com/apple/sourcekit-lsp/tree/master/Editors/vscode)のコードもあるみたい。

なので、まずはそちらのREADMEに従ってVSCodeのsourcekit-lsp拡張機能をインストールします。上記のsourcekit-lspのリポジトリをクローンしてきて、

“`
$ cd Editors/vscode
$ npm run createDevPackage
$ code –in

元記事を表示

iPhoneアプリ学習:ストップウォッチ

#はじめに
某プログラミング学習サイトでの学習記録を記します。

#No1:割愛

#No2:部品配置
・複数の部品にまとめて制約を付ける場合は、
 ・対象となる部品を全て選ぶ
 ・Embed InからStack Viewに登録する
 ・View Controller Scene > View Controller > View > Stack Viewを選択する
 ・位置の制約を付ける

#No3:部品をコードに接続する
・時間表示用のラベル
・ボタン3つ(Start,Stop, Reset)

#No4:ボタン押下でタイマーを開始する
@IBAction func (ボタン名) (_ sendor:Any) {
 Timer.scheduledTimer(
  timeInterval: 0.01, // 実行間隔[秒]
  target: self, // タイマーで実行するメソッドのある場所
  selector: #selector(self.update), // 実行するメソッド名
  userinfo:nil, // selectorに渡す情報。なければnil
  re

元記事を表示

[iOS]project.pbxprojなどのマージコンフリクト解消を最速でやるには

### おすすめツール

– Visual Studio Code

project.pbxprojファイルに限らないが、ファイル内にコンフリクトマーカーがある場合、そこを色付けで表示し、一発で飛べる。その上、「Accept Incoming Change」「Accept Current Change」「Accept Both Changes」の各ボタンが用意されており、ワンタッチで「マージされてきたブランチ」「現在のブランチ」「両方のブランチ」の変更を適用する事ができる。その他、軽く使いやすいためおすすめ。

### 解消の考え方

`project.pbxproj`ファイルは、プロジェクト内にあるファイルの定義およびそれらのフォルダ階層構造などを定義している。そのため、マージ(またはチェリーピック)するブランチ同士でファイルの位置が違ったり、新規ファイルを追加したりしていると必ずマージコンフリクトを起こしてしまう。

まず、現在のブランチと、マージによって持ってきたブランチで、ファイル・フォルダの階層構造がどう違っているかを確認する。

その上で、マージ後はどういった階層構造にした

元記事を表示

UITabBarItemにシステムアイコンをセットする

## はじめに
掲題の通り、UITabBarItemにシステムアイコンをセットする方法がなかなか見つからなかったため、備忘録として残す

## 設定方法
以下のように引数Imageに UIImage(systemName: “アイコン名”)を設定するだけ
アイコン名は以下から取得可能
https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/system-icons/

“`swift
v.tabBarItem = UITabBarItem(title: R.string.localizable.bookList(), image: UIImage(systemName: “book”), tag: 0)
“`

以上!!!

元記事を表示

【Flutter】GoogleDriveへのバックアップ・リストア機能を実装するまでの道のり

![トップ2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228439/7356a55f-67ae-8929-5042-ca79983f4a38.jpeg)

7月にFlutter開発を始めてから2作目のメモアプリ「IdeaShuffleMemo」をリリースしました。
■AppStore
https://apps.apple.com/jp/app/id1517535550

■Google Play
https://play.google.com/store/apps/details?id=com.IdeaShuffleMemoApp&hl=ja

■アプリの詳細記事

ひらめきたい!あなたに!アイデアを発想するためのメモアプリ「IdeaShuffleMemo」

3つの機能を実装しようと取り組みました。この記事では、その中のバックアップ機能を実装する方法を書いていきたいと思います。

■パスワードロック機能実装ついてはこちら
https://qiita.com/YuKiO-OO/items/bf2d1d107d1a6

元記事を表示

【超初心者】WebデザイナーがiOSネイティブアプリ開発に挑戦して学んだこと共有

人類(というか自分)の大きな進歩についての感動を共有。

iOSネイティブアプリがシミュレーター&実機で動作するまでの取り組み。主にWebデザイナーから範囲広げたり、なんとなく学習考えている人向けの共有。

#前提スペック
・某大手企業勤務の雇われ(使い捨てとも言う)Webデザイナー
・HTML、CSS、CMS業務レベル

#取り組んだこと
・MacBookAir2020でXcode(Swift)を使って、iOSネイティブアプリの開発
・シミュレータとローカルの実機で、何となく動作させるまで(iPad)

#大変だったこと
・全部英語w
・Appleは互換性を大事にしてそうな気がしたけど、実際は数ヶ月くらい?のハイペースでコロッコロ仕様を変えてやがる。参考書やWebの情報が少し古いだけで、あまり役に立たない
・XcodeやSwiftにもバージョンがあって、コロッコロ変わる
・環境構築が思いのほか、難しくて大変すぎる。1日仕事どころじゃない

#意外だったこと
・画面のデザインはCSSとかでやると思ってたけど、ネイティブアプリ開発にCSSなんて全く登場しない(たぶん)
・アップル独自(s

元記事を表示

Xcode11 プロキシ設定

プロキシ環境化で作業をしているため、設定をすることが多いのですが、
Xcode11でプロキシの設定が変わっていたので、残しておこうと思います。

###### 変更ファイル
Xcode11以前
/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/MacOS/itms/java/lib/net.properties

Xcode11
/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/itms/java/lib/net.properties

###### 変更内容
パスワード設定がある場合でも、パスワードの指定は不要でした。

**動かない:disappointed_relieved:**
`http.proxyHost=http://username:p%40ssword@myproxy`
`http.proxyPort=8080`

**動いた:smiley:**
`http.proxyHost=http

元記事を表示

UserDefaultってすっごくシンプル!?(追加と取得)

#UserDefaultの書込み
って本当は簡単なのかもしれない。と思い、簡略化して書いてみました。

“`ruby:View1Controller.swift
import UIKit
class ViewController: UIViewController,UITextFieldDelegate {

@IBOutlet weak var emailTextField: UITextField!
var emailTextField = “”

override func viewDidLoad() {
super.viewDidLoad()
emailTextField.delegate = self
}

@IBAction func ButtonAction(_ sender: Any)

UserDefaults.standard.set(emailTextField.text, forKey: “userMail”)

“`
UserDefault.s

元記事を表示

SwiftUI で Animatable なシェイプを作ってみる

## シェイプにアニメーションをつけてみました

SwiftUI の勉強をかねて、[以前の記事](https://qiita.com/takehito-koshimizu/items/ffaf15a77831a6da2c13)で作成した SwiftUI のシェイプにアニメーションをつけてみました。



```

## sample
https://youheinakagawa.github.io/go-to-safari-js/

## npm package
[go-to-safari](https://www.npmjs.com/