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

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

[macOS/iOS] Autolayout覚書

# はじめに
本文書では, macOS/iOSのソフトウェアのautolayout処理に関して、気づいた点/注意すべき点についてまとめます。おそらく目新しい内容はなく、よしなし事を順不同で記載します。

## Autolayout処理の中身
* Viewのサイズ変更は、[setFrameSize](https://developer.apple.com/documentation/appkit/nsview/1483530-setframesize)で行われる

## Autolayout下でのViewの処理
### NSTextView
* スクロールバー付きの[NSTextView](https://developer.apple.com/documentation/appkit/nstextview)のサイズ変更については、NSTextViewそのものでなく、それを含有する[NSScrollView](https://developer.apple.com/documentation/appkit/nstextview)に対して実施する。

元記事を表示

構造体について【Swift】

# 構造体とは?
* 変数、定数、関数を1つのグループとしてまとめる仕組み。
* 構造体の中で作られた変数・定数を __プロパティ__ 、関数を __メソッド__ という。
* 構造体の中で作られた変数・定数を初期化することを __イニシャライズ__ という。
* 構造体を利用するにはインスタンス化が必要。
* データ型は全て構造体である。( `Int`、 `Float`、 `Double`、 `String`、 `Bool` )

# 実装例
“`Swift
struct Human {
// プロパティを定義
let name: String
let age: Int

// initを使用することでイニシャライザ定義
init(name: String, age: Int) {
self.name = name
self.age = age
}

func introduction() {
print(“私の名前は\(name)です。年齢は\(age)歳で

元記事を表示

[iOS/Swift]Alamofire を利用したアプリ実装(郵便番号検索アプリを例に)

### 書くこと
Alamofire を利用した API 呼び出しを利用してアプリを実装する

### 書いた理由
Alamofire を利用した API 呼び出し方法を忘れた時に確認する

### 参考にした記事
[標準とAlamofireでAPIコール処理を書き比べてみる(Swift)](https://qiita.com/uhooi/items/c0e083f916dc516175bd)

上記記事に紹介されていたコードに、UIを実装した
(すごくわかりやすい記事です)

### 前提条件
1. テキストフィールド、ボタンおよび検索結果を表示するラベルは `Main.storyboard` で設定
2. 上記要素は、`ViewController.swift` に紐づけている
3. `CocoaPods` を利用して `Alamofire` はすでに導入済である

### アプリの機能
テキストフィールドに郵便番号を入力し[Seach]ボタンをタップすると、ラベル(水色)にその郵便番号に対応する住所を表示する。

同期、非同期処理について

#同期処理と非同期処理の基本

####同期処理とは
あるタスクを順番に実行する方式で、そのタスクが実行されている間は他のタスクが中断される
####非同期処理とは
ある処理を実行する間に他の処理を実行できる

####DispatchQueueとは
GCD(Grand Central Dispatch)の一部
DispatchQueueないにタスクを詰めると非同期で実行してくれる

DispatchQueue自体には、
Serial、Concurrent、mainの3種類がある。

####DispatchQueue.main

OS側で作成済みなので呼び出すだけ。
1つだけ存在。
直列処理タイプ。
UI表示系タスクはここで行わないと動かない。

“`viewController.swift
let mainQueue = DispatchQueue.main
“`

####DispatchQueue.Global
OS側で作成済みなので呼び出すだけ。
5つ存在。(ただし、実質使えるのは4つ)
並列処理タイプ。
用途を指定して呼出し。

“`viewController.

元記事を表示

キーボードタイプの種類とコード

##はじめに
キーボードタイプの書き方や種類一旦ここにまとめようかなと思います。

##定義
UIKeyboardTypeの定義をJump to Definition(コマンドキーを押しながら調べたいところをクリック)で調べてみました。
以下の通りです。

“`swift
public enum UIKeyboardType : Int {

case `default` = 0 // Default type for the current input method.

case asciiCapable = 1 // Displays a keyboard which can enter ASCII characters

case numbersAndPunctuation = 2 // Numbers and assorted punctuation.

case URL = 3 // A type optimized for URL entry (shows . / .com prominently).

case numb

元記事を表示

Develop in Swift Data CollectionsでiOS開発を学ぶ (1): Lesson 1.2まで

※(1)とついてますが続くかは不明

# Develop in Swift Data Collectionsとは

Appleが高校生や大学生向けに出している学習用教材に含まれる、勉強用のドキュメントです。

https://www.apple.com/tr/education/docs/develop-in-swift-curriculum-guide.pdf

![スクリーンショット 2020-11-21 12.35.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213719/059d3c3b-c0fb-31f7-934e-9fd6022ee4aa.png)

学生向け学習用カリキュラムがあり、そのカリキュラムの最終段階で学ぶ内容のようです。難しそうですが、まぁ現役のプログラマーならいけるでしょう(多分)。

この本を見つつ、iOS開発について学んでいく、という記事になります。基本は本を読んで、僕の記事はあくまで参考程度に見てもらえると良いと思います。

本自体はApple Booksから無料

元記事を表示

Xcode, Pods ProjectName.debug.xcconfig unable to open file.に対する対応方法

#はじめに
Githubからcloneしたプロジェクトの実行を試みた際に` ProjectName.debug.xcconfig unable to open file`というエラーに遭遇したため備忘録をかねて記録として残したいと思います。

以下のようにしていただければ解決できるかと存じます。

“`swift:solved
pod deintegrate
pod install
“`

今回参考にした記事です。
より詳細に記載がりますので、よろしければご参照ください。
https://stackoverflow.com/questions/55558984/xcode-pods-projectname-debug-xcconfig-unable-to-open-file-wrong-directory

ご参考になれば幸いです。

元記事を表示

iOSアプリでOSで提供する機能のUI言語の切り替え

OSで提供する機能を呼び出す際にデフォルトのプロジェクト設定ではUIが英語表示になる。
日本語で表示させるためにはプロジェクトの設定からLocalizationにJapaneseを追加する。

![スクリーンショット 2020-11-21 17.43.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104863/7f7807bc-fadf-0b96-c964-923759daca4d.png)

元記事を表示

【SwiftUi】TabViewとListの実装とViewのフォルダ管理

# はじめに
SwiftUIでTabViewを作成し、それぞれのTabItemごとにViewを作る。
HomeViewにはListを表示し、前回作成したカード型のRowを呼び出すことを目的とする。

UIのデザインはcakesのnote風のデザインを参考にViewを作ります。

今後は今回作成したカードに前回までに実装した地図と都道府県市町村名を表示できるようにし、Firebaseで更新できるようにすることが目的です。
前回までの記事は以下を参考ください。

**参考記事**
[【SwiftUi】経過時間の表示とListViewのセルデザイン](https://qiita.com/m37335/items/93c9bcbede1c8ac64bb6)

# 開発環境
OSX 10.15.7 (Catalina)
Xcode 12.2.0
CocoaPods 1.10.0

# TabViewの作成とフォルダ管理
![TabBarView_swift.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8679

元記事を表示

Xamarin.FormsにてiOSのビルドエラー。画像がFile not foundとされる問題

以下の問題が発生していましたが解決したので記録しておきます。
同じような問題を抱える開発者もいると思うので参考になれば幸いです。

# 問題
以下のビルドエラーがでる

> File not found: ~/Library/Caches/Xamarin/mtbs/builds/~/AppIcon.appiconset/[画像ファイル名].png

# 前提
* Microsoft Visual Studio 2019 を使用
* iOS ビルド時にエラー
* Macbookの容量がないなどの理由でLibrary/Caches/内の削除など行った
* AppIcons.appiconsetで設定している

# 原因
iOSのプロジェクトファイルにすでに使用されていないAssetの参照先が残っていた。
Macbook内のLibrary/Cachesフォルダ内に対象のファイルが存在しないためエラーを起こしていた。

# 解決策
iOSのプロジェクトファイルにすでに使用されていないAssetの参照先を削除する。

“`xml:ProjectName.iOS.csproj

元記事を表示

[iOS・Swift] iPhoneからjsonデータを取得する方法

## はじめに

Swiftでjsonファイルを取り出す過程で詰まるポイントがありましたので、共有したいと思います。

## ①jsonファイルを作成するまで

Export Json Fileというボタンを押して、jsonファイルを吐き出すようにしました。
※Simulatorではなく、実機で動かしています

## ②jsonファイルをXcodeからダウンロードする

Devices and Simulatorsから作成したアプリケーションを選択します。
プログラミング超初心者がFlutterの環境構築をしてみた

やったこと
KBOYさんのYouTubeを見ながら、Flutterの環境構築をしました。

1、Flutterのインストール
2、Flutterのパスを通す

2からすでに、苦戦するという「マジか」と思いつつなんとかできました。

.bash_profile にパスを記載しようとしたのですが、
最近のPCは bash ではなく 

.zshrc っていうのが最近の新しいパス設定の場所らしい

参考にした動画

元記事を表示

[Swift5]storyboardとコードでNavigationBarをカスタムする方法

## なぜstoryboardだけでやらない?
Swiftで開発を進める際に、storyboardでUIを構築するか、コードのみでUIを構築するか初学者の方は悩まれるのでは?と私は思います。

storyboardのみで開発しても良いのですが、コードでカスタムした方が作業工数を減らせることや、デザインの変更などが必要な場合に、コードの方が編集しやすい点などからコードでカスタムを行います。しかし、コードのみだと画面遷移などが直感的に理解しずらいので、今回は最低限をstoryboardで構築し、カスタム内容はコードで記述します。

その他にも、storyboardのみで構築するとコンフリクトが発生しやすい問題や、コードのみで構築するとコードの記述量が多くなるなど双方にメリット,デメリットが存在します。

## storyboardでNavigartionControllerの実装
まずstoryboardでNavigationBarを用意します。

①storyboardのiPhoneを選択(下記画像中央)
![image.png](https://qiita-image-store.s3

元記事を表示

Metal で サポートしている GPU family と feature set を調べる

### M1 Mac mini がやってきた

我が家に M1 Chip の Mac mini がやってきました。これまで、Metal の試行錯誤は、Intel Mac の Simulator と 実際の iPhone や iPad でサポートしている機能が違うので、試行錯誤の効率が悪かったのですが、M1 Chip Mac を入手したので、A12相当の機能の試行錯誤などの効率があがるものと期待していました。しかし、M1 Chip の Mac の Simulator で検証コードを動かすと、思いもよらぬところで落ちました。

「あれ?」と思い、iPad Pro で実行すると、落ちません。そこで、色々調べ始めると、M1 Chip + Big Sur + Xcode 12.2 のシミュレータでは、A8相当にしかならない事に気がつきました。そこで、2020年10月21日つまり比較的最近アップデートされた、Metal Feature Set Tables を調べてみても、M1 の記述が全くありません。

【SwiftUi】経過時間の表示とListViewのセルデザイン

# はじめに
SwiftUIでRelativeDateTimeFormatterクラスを用いて、経過時間を取得できるようにすることと、取得した経過時間を表示することを目的とする。

UIのデザインはcakesのnote風のデザインを参考にカード型のViewを作ります。
今後は今回作成したカードに前回までに実装した地図と都道府県市町村名を表示できるようにし、Firebaseで更新できるようにすることが目的です。
前回までの記事は以下を参考ください。

**参考記事**
[【SwiftUI】Mapkitから取得した情報をFirebaseに保存する](https://qiita.com/m37335/items/d548db31ef6b67cd3c83)

# 開発環境
OSX 10.15.7 (Catalina)
Xcode 12.2.0
CocoaPods 1.10.0

# RelativeDateTimeFormatterの実装
基準日時からの経過時間を出力するクラスです。Twitterなどの○秒前や○日前などを表示をすることができます。
ロケーションを設定することで英語表記や日本

元記事を表示

Flutterチュートリアルを咀嚼する part1 -FlutterはWidgetまみれ-

Flutterって一つのソースを書くだけでiOSもAndroidもアプリ作ってくれるんだって
すごいなー
勉強してみよう

#対象のチュートリアル

https://codelabs.developers.google.com/codelabs/first-flutter-app-pt1#0

#コピペしてできあがったもの
スタートアップ企業の名前をつけてあげるために単語二つの組み合わせをリスト化してくれるアプリ

![スクリーンショット 2020-11-17 16.02.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283826/a192fc3c-b4cb-941a-5006-90fcf9a06acb.png)

#ソースコード

“`dart:main.dart
import ‘package:flutter/material.dart’;
import ‘package:english_words/english_words.dart’;

void main() => runApp(My

元記事を表示

Flutter実装時にお世話になったページ 2020/11/19

## なにか

毎回、同じ問題に、同じ検索して、同じページで解決してるので。。。

## “`Image.network“` や “`NetworkImage“` で画像が表示されない場合がある

特に画像が大量にある画面でたまに表示できてない画像があった。で、ログが流れる。

> ════════ Exception caught by image resource service ════════════
> Connection closed before full header was received, uri = https://xxxxxx

[Stack Overflow “Network Image – Connection closed before full header was received…”](https://github.com/flutter/flutter/issues/25107#issuecomment-655655719)

これで解決する前に、同じページの別のコメントや

[I globally overrode the Htt

元記事を表示

【第4回】初心者二人で0から麻雀アプリ開発

[第3回の記事はこちら](https://qiita.com/RTkd59/items/039c380f0955de103886)

##改版履歴
2020年11月19日投稿
##第4回会議(2020年11月13日)

###議題
・画面デザイン詰める
・実装してみたい機能
・来週からの活動
・プロジェクト全体の大まかな期間

##画面デザイン
画面のデザインはgoogledrive内のdraw.ioを使用して作りました。この時、ホーム画面から成績入力画面に移動する際に、画面全体で遷移させるのか、画面を部分的に遷移させるのか悩みました。部分的に遷移するのが今の流行ということなので、部分遷移でいこう!ということになりました。また、ポップアップで入力画面を立ち上げるという案も出ました。

##実装してみたい機能
今回の会議で、お互いにやってみたいことが結構出てきました。
・テーマ
最近のアプリはダークテーマとか、ホワイトテーマとか自分の好みで切り替えられるようにしたい。デフォルトであるらしい…❓

・githubの芝みたいなもの
打数に応じてカレンダーに色づけするみたいなことがで

元記事を表示

XGBoostをiOSアプリで動作させる

Kaggleなどのコンペで人気のXGBoostをiOSアプリで動作させたので、その方法を紹介します。

### XGBoostとは

勾配ブースティング決定木 (GBDT, Gradient Boosting Decision Tree)を実装したライブラリです。

### GBDTとは

勾配ブースティング決定木とは、手短に説明すると『決定木を複数組み合わせたアンサンブル学習の一種で、勾配降下法を用いて学習を行うもの』です。

決定木とは、木構造を用いて回帰や分類を行う手法です。アンサンブル学習は、複数の決定木を用いて予想の精度を上げる手法です。

ブースティングというのは、アンサンブル学習の一種で、それぞれの学習器を直列に学習する手法です。それ以外のアンサンブル学習の手法としては学習器を並列に学習させるバギングなどがあります。例えば、ランダムフォレストはバギングの一種です。

勾配降下法とは、ディープラーニングでもよく用いられる手法で、重みを少しずつ更新して勾配が最小になるように学習する手法です。

### 図で説明します

駆け足過ぎたので、図で説明します。

例えば、決定木は下

元記事を表示

[Swift][MVVM]関数型ViewModelのススメ

# 概要
本稿ではアプリアーキテクチャの1形式であるMVVMの、特に`ViewController`と`ViewModel`の関連を記述するスタイルとして`関数型ViewModel`を紹介します。

参考リンク: [Modeling Your View Models as Functions](https://medium.com/grailed-engineering/modeling-your-view-models-as-functions-65b58525717f)

## 前提知識
本稿を読む前提として、以下の知識があると理解しやすいです。
– iOSアプリ開発
– Swift 5
– [RxSwift](https://github.com/ReactiveX/RxSwift)

# MVVMを使ったアプリの実装例
いくつかのスタイルで簡単な機能のアプリを実装してみます。

## 仕様
まず、以下のようなアプリを考えてみましょう

– 画面の中央にカウンターを表示する
– +ボタンを押すとカウンターの数値が1増える
– -ボタンを押すとカウンターの数値が1減る
– 数値が偶

元記事を表示

OTHERカテゴリの最新記事