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

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

【Swift】Combine.frameworkのFutureとDeferredと即時実行、遅延実行

以前投稿した内容で
Combine.frameworkの`Future`はインスタンスを生成した時点で
中のクロージャを実行させるということについて書きました。

https://qiita.com/shiz/items/f089c93bdebfaef2196f
https://developer.apple.com/documentation/combine/future

この場合
Subscribeをしていないのに処理が実行されてしまい
無駄にリソースを消費してしまう可能性や
副作用を起こして思わぬ動作をしてしまう可能性もあります。

そういう場合`Deferred`を活用する方法があります。

https://developer.apple.com/documentation/combine/deferred

`Deferred`はinitで`createPublisher`というクロージャを受け取り
中でPublisherを生成します。
このクロージャは**Subscribeした時に初めて**実行されます。

# 検証

下記のコードをPlaygroundで実行して確認し

元記事を表示

Flutter PlatformView (iOS) の作成

FlutterでiOSのPlatformView (UiKitView) を作るまでに手こずったのでメモしておく。

### 前提
– 対象とするiOSのバージョンは11.0以上
– Swift
– Xcode 10.3 (Xcode 11入れていなかった。。)
– できるだけPlatformViewにだけフォーカスしたコードにする
– View作成時にパラメータを指定して、それを表示するだけ
– Androidは追って

iOS, Swiftは初心者なので、生暖かい目が嬉しいです。

## プロジェクトの作成と設定

### 作成
https://flutter.dev/docs/development/packages-and-plugins/developing-packages を参考にプロジェクトを作る。

“`
$ flutter create –org org.yyyyyyyy –template=plugin -i swift -a kotlin my_first_view
$ cd my_first_view
$ flutter pub get
$ cd exa

元記事を表示

#9 UITableViewCellをカスタマイズする1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`View`に`UITableView`を置き,制約を追加し,`UITableViewCell`をその上に置く.
Cellの`identifier`を設定する.

スクリーンショット 2019-11-20 午後11.01.27.png

##part2
`Table View`を選択した状態で,`Size inspector`の`Row Hight`に任意の数字を入力する.

スクリーンショット 2019-11-20 午後11.15.21.png#8 XcodeのTableViewの使い方1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
Xcodeで`TableView`と検索する.

スクリーンショット 2019-11-20 午前0.09.04.png

##part2
UITableViewを置きたいViewに乗せる.
制約を付ける.

スクリーンショット 2019-11-20 午前0.09.28.png

元記事を表示

[Flutter] iOS で WebView の Scrollbar の位置がずれる問題を修正する

# Flutter で Web ページを表示する

[webview_flutter](https://pub.dev/packages/webview_flutter) を使いますが iOS デバイスで表示すると Scrollbar の位置が変なところに出るという報告があります。

https://github.com/flutter/flutter/issues/41592

普通に WebView を表示すると、

“`
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: WebView(
initialUrl: “https://www.google.com/”,
javascriptMode: JavascriptMode.unrestricted,
)
);
}
“`

![test2.gif](https://qi

元記事を表示

???iOS開発で誰も教えてくれなかったけど当たり前にやっているSwiftの書き方???

「誰も教えてくれなかった」ってタイトルですが、僕iOS開発に関しては独学でしかやってないので、よく考えたら誰にも教わってないですね???
まあなんか、本読んでもあんまり明示的には書いてないけど、「皆当たり前にやってるやん!」と思ったことを書いていきます。
(どこかに書いてあるのを見落としただけかもしれませんが)

# delegateで要求されているprotocolはextensionで書く
ルールではないですが、慣習的にextensionで各protocolごとに分離して書いた方がきれいです。

“`swift
extension SampleMapViewController: MKMapViewDelegate {

func mapView(_ mapView: MKMapView, regionWillChangeAnimated animated: Bool) {
//do something
}
“`

# プロパティの型をOptionalにするとイニシャルしなくてよい
Swiftの制約として、クラスに紐づくプロパティは全部イニシャライザで初期

元記事を表示

#7 Main.storyboardのViewのアイテムをコードと接続する1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
Xcodeの右上の赤枠をクリックする.

スクリーンショット 2019-11-20 午前0.37.51.png

##part2
画面が分割するので,分割した画面の表示するfileを選択する.

スクリーンショット 2019-11-20 午前0.39.23.png

##

元記事を表示

#6 新規のUIViewControllerのクラスを作る1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
ナビゲータバーで右クリックし,`New file`を選択する.

スクリーンショット 2019-11-20 午前0.17.49.png

##part2
`Cocoa Touch Class`を選択する.

スクリーンショット 2019-11-20 午前0.18.03.png

元記事を表示

#5 iOSアプリのLabelの編集1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
編集したいLabelを選択する.

スクリーンショット 2019-11-19 午後11.37.41.png

##part2
`Attributes inspector`からtextや色,大きさを変更する.

スクリーンショット 2019-11-19 午後11.09.03.png#4 iOSアプリでの画面遷移の1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`UIViewController`と検索する.

スクリーンショット 2019-11-19 午後10.56.48.png

##part2
`UIViewController`を`Main.storyboard`に追加する.

スクリーンショット 2019-11-19 午後10.57.12.png#3 ViewControllerにNavigationControllerをつける1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`NavigationController`を付けたい`ViewController`を選択する.

スクリーンショット 2019-11-19 午後10.47.09.png

##part2
Xcodeのツールバーから`NavigationController`を選択する.

スクリーンショット 2019-11-19 午後10.47.58.png#2 iOSアプリでAdModを使えるようにする1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`Firebase`にログインして,プロジェクトを作成するか既存のものを選択する.

[Firebase console – Google](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=2ahUKEwinkf-nqfblAhVKZt4KHQhvCmkQFjADegQIAhAB&url=https%3A%2F%2Fconsole.firebase.google.com%2F%3Fhl%3Dja&usg=AOvVaw0nJq2yfxv3uujz0Z6Ozn8z)

スクリーンショット 2019-11-18 午後11.18.14.pngpod install 時に No such file or directory @ rb_sysopen エラーが発生した際の対処方法

# pod install 時に No such file or directory @ rb_sysopen エラーが発生した際の対処方法

ライブラリをインストールするために、

“`shell

$pod install
“`
した際に、以下のエラーが発生してハマったので備忘録。

“`shell
Errno::ENOENT – No such file or directory @ rb_sysopen – /Users/zizi4n5/.cocoapods/repos/jsdelivr-cocoa/all_pods_versions_2_e_c.txt
/Library/Ruby/Gems/2.3.0/gems/cocoapods-core-1.8.4/lib/cocoapods-core/cdn_source.rb:316:in `initialize’
/Library/Ruby/Gems/2.3.0/gems/cocoapods-core-1.8.4/lib/cocoapods-core/cdn_source.rb:316:in `open’
/Library/R

どこよりもわかりやすいiOS最強課金まとめ

#はじめに
わかりにくいiOSのアプリ内課金についてどの記事よりもわかりやすいものを目指して書きました。
実際に実装していて困ったことなどもまとめたので同じ状況で悩んでる人の助けになれば幸いです。
今現在まだ実装途中でして、まだ細かい部分など書ききれていない部分もありますが、都度更新していきたいと思います。
間違ってることなどあればご指摘くださいmm

##課金について
###課金の種類

| 種類 | 例 | 説明 |
|:—————–|:——————|:——————|
| 消耗型 | ゲーム内でのスタミナやガチャを引くためのアイテムなど | 一度使うとなくなり、再度購入が可能 |
| 非消耗型 | 広告の非表示や使える機能の拡張など | 一度の購入だけで無制限に使用できる | 
| 自動更新サブスクリプション | 月間サービスのクラウドストレージや週刊雑誌のサブスクリプションなど、サービスや定期的

コードレビュー虎の巻

# レビューガイドライン(Review GuideLine)

ここで述べているレビューはピアレビューについての方法です。
(作業成果物の欠陥と改善の機会を探すレビュー)

「最悪を最初に」を基本としてレビューすべき、
たとえば、仕様やアルゴリズムに欠陥があるのに、typoにこだわってもしょうがないので、なにが最悪かを考え、それを防ぐための物からレビューをします。

誤りがプロダクト全体に影響し、手戻りのコストが高くつく、あるいは失敗するようなリスクがないかを考慮にいれてレビューの対象を選択します。
たとえば、基本的な初期フェーズの要求仕様や、クリティカルな決定の基礎になる仕様、使用頻度が高いモジュールなどを重点的にレビューします。

以下に書く項目はレビュアーに負担をかけないようにするのが前提なのでレビュアーに出す前にそもそもテストしたい項目です。

参考:
[あなたのおっしゃるレビューってどのことかしら?](https://qiita.com/mima_ita/items/c3490ad1ccc12ad853f1)
[コードレビューの際に気

あるFrameworksを追加したら「1 duplicate symbol for architecture arm64」エラーが出た時の対応方法

#はじめに
BLE通信対応の機器との接続処理を追加する為に、
提供されたFrameworksを追加したら「1 duplicate symbol for architecture arm64」エラーが発生した。

#ググってみた
「duplicate symbol for architecture」にヒットするサイトがいくつか出てきたが、
何となく違う感じがしたので自分で考える事に…

#エラー内容をよく見てみる
エラー内容
“`duplicate symbol ‘Framneworks名’ in:
/XXXXXX/○○ViewController.o
/XXXXXX/□□ViewController.o
ld: 1 duplicate symbol for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)“`
今回BLE機器と通信する為に手を入れたViewControllerで重複が発生しているので心当たりが…

#エラー原

元記事を表示

超簡単な触りを見て、FlutterのColumnとRowのウィジェットイメージを理解する

# 対象読者
初心者で、RowやColumnのイメージだけを知りたいレベル
簡単なRowやColumnを書く時の参考にしていただけるといいかもしれません。
僕は文章だけだと全く理解できないので、図にしてみました。

# どのような時に使うのか?
## 子が複数の時
ColumnやRowを用いる

### Column
子(child)を垂直配列で表示するウィジェット。

https://api.flutter.dev/flutter/widgets/Column-class.html

### Row
子(child)を水平配列で表示するウィジェット。

https://api.flutter.dev/flutter/widgets/Row-class.html

### 仮に以下の画像を無理やりウィジェットで表現してみると

授業のフリー素材

![授業のフリー素材.png](https://qii

元記事を表示

How to Convert an Android App into an iOS App

The development of mobile apps is highly reliant on one’s target audience. If you have an iOS or Android app, then you can only target a single platform and audience segment. To ensure that your product reaches more people, it is a good idea [to develop mobile apps] (https://codeit.us/services/mobile-app-development-services) for both iOS and Android platforms. This article shares a few tips on how to convert or “port” an Android mobile application into an iOS mobile application.

The conversion

元記事を表示

XcodeのUIテスト時にiOSシミュレータのステータスバーを変更する

pre.png
## iOSシミュレータのステータスバーを変更する方法

Xcode11から `xcrun simctl` コマンドに `status_bar` 機能が追加され、iOS シミュレータのステータスバーの表示を変更できるようになりました。

(参考) [iOSシミュレーターのステータスバーを変更する](https://qiita.com/mishimay/items/6fb3054f12a3dbeedee9)

[fastlane](https://docs.fastlane.tools) の [snapshot](https://docs.fastlane.tools/actions/snapshot) でストア用のスクリーンショット撮影する際などに活躍しそうですね!

## ステータスバーを変更するタ

元記事を表示

Xcode SwiftUI 選択時にデフォルトで作成されるプロジェクトのフォルダやファイルの備忘録

プロジェクト作成時にたくさんフォルダやファイルができるのだが、
まとまった資料がヒットせず、初心者にはよくわからなかったので整理した。
プロジェクト名をtest1とした場合。
![截屏2019-11-1815.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518389/4d413a1d-362f-f500-fd0b-154182274b04.png)

●AppDelegate.swift : アプリ「開始時」、アプリ「終了時」の管理用、肥大化を避けるために多数の処理をここに書くことは推奨されていない
https://developer.apple.com/documentation/uikit/uiapplicationdelegate

●SceneDelegate.swift : アプリ「起動中」(アクティブになった、バックグラウンドになった)の状態変化管理用、マルチインスタンス立ち上げる場合の管理用

※AppDelegate.swift と SceneDelegate.swift

元記事を表示

OTHERカテゴリの最新記事