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

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

【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って一つのソースを書くだけで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減る
– 数値が偶

元記事を表示

[swift]選択肢をもつダイアログの後に処理に応じて再びダイアログを表示して画面遷移したい

タイトル長くなりがち。

###やりたい事

アカウント設定画面でログアウトボタンを押した時に、

– 「ログアウトしますか?」というダイアログに「OK」/「キャンセル」の選択肢を用意。

– 「OK」を押すと、APIでログアウト処理が行われる。
→成功すると、「ログアウトしました」というダイアログが表示され、画面が遷移する。
→失敗すると、「ログアウトに失敗しました」というアラートが表示される。
– 「キャンセル」を押すと、最初のダイアログが消える。

っていう処理を行いたい:hugging:

###とりあえず作ってみた

今回は、

– ちゃんと読んでほしいアラートは手動で閉じる。
– お知らせ程度のダイアログは勝手に消える。

みたいな感じでメソッドを使い分けています。

“`AccountViewController.swift
import UIKit
final class AccountViewController: UIViewController {
@IBAction private func tappedLogoutButton(_ sender: U

元記事を表示

【SwiftUI】RPGにあるような攻撃エフェクトを再現してみたい!

#はじめに
こんにちは!@kanato4です。

仕事ではJavaがメインなのですが、プライベートではSwiftを勉強している若輩者です。ただ、Swiftははじめて間もないので基本的な文法しか分かりません。これからもっと知識をつける予定です。

さて、そんなSwift初心者の私ですが、何を思ったのか「思いきってSwiftUIを使って遊んでみよう!」と考えたわけです。

SwiftUIは2019年に発表されたフレームワークなのですが、従来のSwiftの書き方とかなり違ってくるという話だったので、「やっぱこれからiPhoneアプリ作るなら知っておかないとね☆」と挑戦したわけですが、案の定苦労しました。。

今回はそんな私がはじめてSwiftUIで作れた成果物?を折角なら見てもらいたいなぁと思い記事にしました。アウトプット大事!

#完成したもの
まずは完成したものを見てやってください。
[![Image from Gyazo](https://i.gyazo.com/57f8330a06cfc6de680a0906e2f9e727.gif)](https://gyazo.com/57f83

元記事を表示

iOSアプリ開発から公開までの流れ(Pingを作ってみる)

2015年頃から「Pythonista3 (Python 統合開発環境の iOS アプリ)」でアプリを作成して遊んできました。
しかし、ネイティブな iOS アプリ (や Android アプリ) も作ってみたい!そして世界に向けてアプリを発信したい!
という欲求が急に沸き立ち、MacBook を購入しました。
まずはリハビリを兼ねて Ping を作成します。

本稿は、Xcode を使用したアプリの作成から公開までの足跡と備忘録になります。

## 目次
Qiita で既出の手順は限定共有記事にしてあります。
新しい UI フレームワーク **SwiftUI** や**ソケットプログラミング**でハマったところがあれば、そのへんとあと**Ping の仕組み** あたりを一般公開しよう思います。

1. [Xcodeプロジェクトの作成](https://qiita.com/manabapp/private/596d1acd45ece0499d73)    (限定共有記事)
1. [iOSアプリのビルドと起動確認](https://qiita.co

元記事を表示

アクセス修飾子まとめ【Swift】

# はじめに
コードを書く際にあまり意識していなかったのと、理解が曖昧だったので備忘録として投稿します。

# アクセス修飾子とは?
アクセス修飾子とは、クラスや関数等にアクセス制限を設けるために利用します。

## internal
* 同じモジュール内であればアクセスすることができる。

#### モジュールとは
モジュールとは`import`して読み込んで利用する`Framework`を作成するための仕組み。

## private
* 一番制約の厳しいアクセス修飾子。
* 同じファイル内からのアクセスのみ許可されている。
* クラス単位ではなく、ファイル単位のアクセス制御であることに注意がいる。( Swift4から`extension`で`private`プロパティにアクセスできるようになった。)

## fileprivate
* 同じファイル内からのアクセスのみ許可されている。

## public
* 別のモジュールからでもアクセスできる。
* 継承やオーバーライドが不可能

## open
* 別のモジュールからでもアクセスできる。
* 継承やオーバーライド

元記事を表示

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

## なにか

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

## ContainerのBottomにだけ、枠線を入れたかった

[Stack Overflow “How to add a border to a widget in Flutter?”](https://stackoverflow.com/a/53680045)

## url_launcherでカスタムURLスキーマを使用したアプリ起動ができなかった(Android)

AndroidManifestまで意識が行かなかった。。。

[Stack Overflow “[url_launcher] When targeting API 30, canLaunch always retrurns false”](https://github.com/flutter/flutter/issues/63727#issuecomment-691066239)

## flutter upgradeしたら、ビルド通らなくなった。。。

こんなエラーが出るようになりました。

“`
Flutter Row()

元記事を表示

iOSの言語設定を取得するベストプラクティス(Swift)

## はじめに

iOSの言語設定を取得するベストプラクティスを紹介します。

## 環境

### PC

– OS:macOS Big Sur 11.0.1
– Xcode:12.2 (12B45b)
– Swift:5.3.1

### シミュレータ

– 機種:iPhone SE (2nd generation)
– OS:iOS 14.2

## 結論

– アプリがローカライズされていない
– `Locale.current` ではうまく取得できないので、 `Locale.preferredLanguages` から `Locale` を生成し直す
– アプリがローカライズされている
– アプリ単位で優先する言語を指定できるので、「おまけ」に書いたようにローカライズの設定を使うのがベター
– OS単位の言語設定を取得したい場合は、ローカライズされていないときと同様の方法でいい

## 言語設定の取得を試す

結論に至るまでにいろいろ試したので、過程を紹介します。

__PREFERRED LANGUAGE ORDER(使用する言語の優先順序): English

元記事を表示

カプセル化について

##カプセル化とは
データとメソッドを1つのオブジェクトにまとめてその内容を隠蔽すること!だそうです。
オブジェクト外から直接アクセスすることを出来なくして、不正なアクセス・意図しない変更から守ることができるのです!

##オブジェクト指向の1種
オブジェクト指向の構成要素3つのうちの1つになるそうです。
構成要素は以下の3つです。

+ 継承
+ カプセル化
+ ポリモーフィズム

##カプセル化するには?
データを保護することがカプセル化です。
その保護をするために、アクセス修飾子と言うものを使ってアクセスを制限していきます。

##アクセス修飾子
アクセス修飾子には制限の範囲に合わせて使うものが変わってきます。
以下が一覧になります。
私も使いこなせているわけではないですが。(privateしか使ったことありません)
カプセル化ではprivateを使用します。

+ open モジュール外からもアクセスできる。
+ public モジュール外からもアクセスできる。 サブクラス化されない。 overrideできない。
+ internal モジュール内ならアクセ

元記事を表示

Mac M1(Apple Silicon)でhomebrewをインストールできるの?

## 今まで通りにインストールしようとしたら…

現状、ターミナルから今まで通りhomebrewをインストールしようとするとこのような出力が表示されます。

“`bash
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”

Homebrew is not (yet) supported on ARM processors!
Rerun the Homebrew installer under Rosetta 2.
If you really know what you are doing and are prepared for a very broken experience you can use another installation option for installing on ARM:
https://docs.brew.sh/Installation
“`

今まで通りではダメみたいですね。

## 対策1

元記事を表示

OTHERカテゴリの最新記事