iOS関連のことを調べてみた2021年10月31日

iOS関連のことを調べてみた2021年10月31日

iOS14で非推奨となったUITableViewCellのtextLavelプロパティ等の対応(iOS13対応含)

## 経緯
iOS14でUITableViewCellのtextLabelプロパティ等が非推奨(Deprecated)になりました。代わりに、`defaultContentConfiguration`等を使用するのですが、こちらはiOS13非対応のため、現状iOS13以前に対応しているアプリだと使えません。

Xcodeが助け舟を出してくれますが、念の為解決方法をメモしておきます。

## 対応方法
“`swift
// クラス名は任意。TableViewControllerを使わない場合、親クラスはUITableViewDataSource
class TableViewController: UITableViewController {

let itemArray = [“A”, “B”, “C”]

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
itemArray.count
}

o

元記事を表示

Flutter Flavor対応(パッケージ未使用)

#内容
Flutter開発時にFlavorが導入されたプロジェクトに参画したり、他のメンバーがFlavorを導入した後にFlutterを触ったりすることはあったが、自分でFlavorを導入したことがなかったので、導入までの流れをまとめる。

やり方は様々あるようですが、今回は、main_dev.dartとmain_prod.dartの2ファイルを作成する方法で行います。

#開発環境

PC:macOS Big Sur
エディター:Visual Studio Code, Android Studio, Xcode

Dart:2.13.1
Flutter:2.2.1
Visual Studio Code:1.16.2
Android Studio:4.1.2
Xcode:13.1

その他
 Flavorパッケージは未使用
今回は開発環境と本番環境を作成する。
それぞれの名前は以下のように統一している。(Android, iOS共に同じ名前を使用する。)
開発環境:dev
本番環境:prod

#準備

以下のファイルを作成する。

・main_dev.dart
・main_pro

元記事を表示

iOS15 Navigation Bar TitleのFont / Colorの設定方法

iOS15でNavigation Barの背景色が透明に変わましたが、付随してタイトルの文字色の設定も少し手こずったのでメモしておきます。

## 該当箇所
![スクリーンショット 2021-10-30 13.15.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505421/c0862e54-5067-69ce-5190-43a34afdc698.png)

## 手順

– Navigation ControllerのBarを選択
![スクリーンショット 2021-10-30 13.33.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505421/00704a0c-7d70-e4f5-ef7a-fa928c9a15ed.png)

– `Appearances` > `Standard`, `Scroll Edge`
![スクリーンショット 2021-10-30 13.25.39.png](https://

元記事を表示

【Swift × cocoapods】0から学ぶライブラリ(SSSwiftUIGIFView)の使い方

# 目的
Swift でライブラリ(SSSwiftUIGIFView)を使い GIF画像 を表示させる

# 結果
![シンプソンズ_画面収録.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764557/63da207e-70cf-117f-320a-0fc96a5c018e.gif)

# 前提
ファイルの構成

![スクリーンショット 2021-10-30 1.37.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764557/40453430-2ad4-ec92-0606-c595b0b85ac7.png)

![スクリーンショット 2021-10-30 1.37.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764557/df19f994-4055-8e7a-d86b-63821d30095f.png)

元記事を表示

【Swift】UITextViewにプレースホルダーをつける

##まえがき
• notionでメモ程度に書いてるのをQiitaでまとめてみた!
• 自分用
• UITextViewにプレースホルダーねーじゃんってなったので作ってみた
# プレースホルダー付きカスタムTextView↓
“`swift
import UIKit

class CustomTextView: UITextView {

var placeholderText: String? {
didSet{ placeholderLabel.text = placeholderText }
}

let placeholderLabel: UILabel = {
let label = UILabel()
label.textColor = .gray
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()

//y軸をセンターにするー

元記事を表示

【React Native】アプリ内でWebViewを表示する時のヘッダータイトルを動的に変更

##アプリ内でWebViewを表示する時、WebView内で画面遷移してもも動的にヘッダータイトルを変更したい
アプリを実装していく中で、ほぼ間違いなくStackNavigationを使って画面遷移の制御をすると思います。
アプリで表示するところは画面ごとにタイトルを決めれますが、webViewは一つタイトルを決めて、そこからwebView内で画面遷移しても同じタイトルが使われてしまいます。
webViewを使うときはタイトルを表示しないという選択肢もありますが、タイトルを動的に変更する方法を見つけたので共有します。

##ライブラリをインストール
`react-native-webview`
`cd ios && pod install`

##実装
WebViewの`onNavigationStateChange`というメソッドを使ってWebViewのタイトルタグを取得します。

“`javascript
import React from ‘react’;
import {WebView} from ‘react-native-webview’;
import { SafeAr

元記事を表示

First Responderについて理解する

## はじめに
iOSではアプリ起動時に外的作用であるイベントを待ち続け、

イベントが来たら1つずつ処理をするイベントループと呼ばれる状態が作られる。

イベントの例としては、画面のタッチ、端末のシェイク、サーバからのプッシュ通知などがある。

これらの通知は一時的にイベントキューという場所に格納され、先入先出の順でイベントループにより処理がおこなわれる。

アプリケーションの共通部分となるUIApplicationオブジェクトはこのイベントループを管理し、

受け取ったイベントを適所にディスパッチ(割り振り)している。

## FirstResponderとは

iOSがイベントを検知したときに

一番はじめにイベント処理を試みるUIResponderオブジェクト。

イベント発生時、まずFirstResponderにイベントがディスパッチされ、

FirstResponderでイベントを捌くことができなかった場合に、

Responder Chain(詳細後述)を辿って、処理できるResponderを探す。

FirstResponderになるためには

[canResignFi

元記事を表示

iPhoneでPythonを使う(Pyto入門)

:::note warn
※この記事ではiPhone/iPadを所有している、Pytoを購入できる、Pythonの基礎知識があることを前提としています。
:::

##導入
こんにちは。
chibibakuと申します。今回は、iPhoneでPythonが利用できるPytoというソフトウェアを紹介+モバイル独自の機能を活かしたソフトウェアを作成しようと思います。

##今回の内容
>Pytoとは
>Pyto購入と、UIの見方
>モバイル独自の機能とは?
>実際に書いてみる

#Pytoとは
Emma Labbé氏の開発した、iPhone上でPythonのIDLE、プログラムが扱えるソフトウェア。Emma氏は他にもiPhoneでC開発のできるアプリも公開されてました。

公式サイト
https://pyto.app/
ドキュメント
https://pyto.readthedocs.io/en/latest/

執筆(2021/10/26)直後にアクセスされた方には日経ソフトウェア誌をお読みになった方もいらっしゃるかと思います。Pytoは前述の通りiPhoneで様々なコードを書くことができる

元記事を表示

[iOS Swift] Auto Layout の基礎

## はじめに
iOS は最近始めたばかりで、まず AutoLayout を理解するところで苦労した。基礎的なところをまとめてみたので、初学者の方の参考にでもなればと思い紹介します。

macOS Mojava 10.14.6 / Xcode 11.3.1 / Swift 5.0

## 基本的な考え方
ビューにコントロールを配置するとき、コントロールの位置と大きさは、一般的にはコントロールの frameプロパティ(ビュー上の座標点とコントロールを格納する矩形領域のサイズからなる)により定義する。iPhoneは機種によってスクリーンの大きさが異なるので、この方法をとるとコントロールがスクリーンからはみ出したり、余白が偏って生じたりする場合がある。

Auto Layoutoは従来型のコントロールの配置とは全く違う方法である。 この方法をとることにより、スクリーンの大きさが異なっても、コントロールが自動的に適正な位置に配置されるよう指定することができる。

一言で言えば、Auto Layout を使いこなすには、制約(constraint)の意味を理解すれば良い。下記の図に示すが、例えば

元記事を表示

UIViewとUITableCellの共通化

# はじめに
こんにちは。
今回は、私がTableViewを使うプロジェクトでよく使っている、`UIView`と`UIViewCell`の共通化について書きます。
`UIView`と`UIViewCell`で同じようなデザインを使うことが多くて、この方法を見つけたときは感動しました。
`TableView`があるプロジェクトでは、ほぼ必ず使ってます。


# ViewとCellの共通化が有効な場面
– UITableViewのヘッダーにテーブルの項目タイトルをつけたい時
– 通常はViewとして使う部品をTableViewのCellとしても利用したい


# 実装

### 仕組み作り
こんな感じで、プロトコルを1つ作ります。
CellとViewで共通利用したいカスタムビューにこのプロトコルを継承させればOKです。

`extension`に定義した`identifier`は、Cellをインスタンス化するときに使えるので、実装しておきます。

“`swift
public protocol Cel

元記事を表示

IOSの管理

#はじめに

CCNA試験の勉強をしていて、IOSの管理について勉強したものをまとめています。
ご指摘等ございましたらご教授下さい。

IOSには第1世代と第2世代に分かれています。
IOSイメージファイルによって、使用できる機能とできない機能があります。
第1世代の機器では用途に合わせて、適宜IOSイメージをインストールする必要がありました。
しかし、第2世代ではIOSユニバーサルイメージがインストールされており、
用途別にインストールせずに、ライセンスを購入するだけでアップグレードできます。

##ルータのメモリ領域

ROM
NVRAM
フラッシュメモリ
RAMの4つがあります。
この内、RAMだけが電源が消えると消えます。
これらのメモリを使って、ルータの起動手順を見ていきましょう。

①ROMでPOST(自己診断プログラム)を起動します。
これはインターフェイスやハードウェアは大丈夫かを調べます。

②起動モードは何にするか?
これはROMのブートストラップがNVRAMのコンフィギュレーションレジスタに
起動モードを確認します。

③どのIOSを起動するのか?
ROMのブート

元記事を表示

iOSで 光学迷彩

移動する物体を除いた背景を作り、それをベースに物体に光学迷彩エフェクトをかける方法の紹介です。

<完成イメージ>

|人物|ボトル|
|:-:|:-:|
|||

物体のセグメンテーションには [DeeplabV3](https://developer.apple.com/jp/machine-learning/models/) を使っています。

### 1. 光学迷彩画像の作り方

この記事では物体を透かして表示することで光学迷彩を表現しています(つまり物体の位置に、物体の裏にある背景色を出力)。その際、物体の真後ろ

元記事を表示

Swift JSON+Codableで不正なURL表現の文字列があった場合のデコードエラーを防ぐ

# URLのCodable

JSONなどのデータをSwiftのStructに落とし込む時、`Codable`が使われます。
structの各プロパティをCodableに対応したクラスにすることで、JSONをstructに変換することができます。

Codableに対応したクラスですが、Appleのドキュメントに、[Encoding and Decoding Custom Types](https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types) というものがあります。
ここには、String, Int, Double, Date, Data, そしてURLが対応していると列挙されています。
なので、struct中にURLがあっても、その文字列がURLで表現される場合、正しくURLとして変換されます。
以下はURLを含む文字列の例です。

“`:JSONデータ
let data = “””
{
“id”: 123

元記事を表示

【Swift】UIAlertViewControllerの実装

#はじめに
ユーザーに確認を求めたりエラー表示をしたりとよくアラートを出したい場面があると思います。
そんな時に毎回アラートを出すコードを書くのは効率が悪いので、どこでもすぐ呼び出せるようにアラート処理用のファイルを作成しておきます。
コピーして使用できるので特に初学者の方のお役に立てればと思います。

#アラートを実装

“`swift
import UIKit

final class Alert {

// OKアラート
static func okAlert(vc: UIViewController, title: String, message: String, handler: ((UIAlertAction) -> Void)? = nil) {
let okAlertVC = UIAlertController(title: title, message: message, preferredStyle: .alert)
okAlertVC.addAction(UIAlertAction(title: “OK”,

元記事を表示

新 App Store 審査ガイドライン 翻訳&差分ガイド 2021年10月号

# はじめに

これは2021年10月22日付けで変更された App Store 審査ガイドラインの翻訳&差分ガイドです。

[前回](https://qiita.com/midnightSuyama/items/1eb396f775a01a876729)からの主な変更点は、課金方法の紹介と iOS 15 の In-App Events についてです。あくまで、課金方法の “紹介” が緩和されるだけであり、アプリ内の制約は変わらず。

旧規約では「メールで他の課金方法を紹介」を禁止していましたが、該当の文章は削除され、さらに連絡先情報の取得が可能となりました。これには、米国開発者による集団訴訟の[合意内容](https://www.apple.com/jp/newsroom/2021/08/apple-us-developers-agree-to-app-store-updates/)が反映されているようです。

他方、日本公正取引委員会との[合意内容](https://www.apple.com/jp/newsroom/2021/09/japan-fair-trade-commiss

元記事を表示

SwiftUI + Combine で MVVM & Clean Architecture な設計を考えてみた

# はじめに

こんにちは。
iOS 13 で SwiftUI がリリースされてから早 2 年。
そろそろ SwiftUI をちゃんと学んでおこうと思い立ち、趣味プロダクトで SwiftUI の習作アプリを開発してみました。

# 出来上がったもの

小説投稿サイト [小説家になろう](https://syosetu.com/) の公開 API を利用させていただき、該当サイトの閲覧アプリを開発しました。

### 動作イメージ

### 実装した機能
– 「日間」「週間」「月間」「四半期」の小説ランキング閲覧機能
– 小説の検索機能
– 小説の閲覧機能(ただの WebView ですが。。。)

### 実際のコード
以下のリポジトリに置いてあります。もし興味がありましたら是非触ってみてください。
https://github.

元記事を表示

【SwiftUI】おしゃれを導入!デザイン系ライブラリ

#はじめに
SwiftUIはAppleの標準アプリのような画面が実装できるので、デザインに関しては素人でも大失敗はしないという安心感があります。ただちょっと一工夫するのが意外と苦労したりします。今回はSwiftUIにおいて使えるデザイン系ライブラリのライブラリを紹介したいと思います。

:::note
紹介するライブラリは全てSwift Package Managerによる導入が可能です。
:::

#[Liquid](https://github.com/maustinstar/liquid)

![スクリーンショット 2021-10-25 12.12.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/bec2f5da-ed7c-d785-543b-28a5d1f6c247.png)

泡のような図形を表示できるライブラリです。アニメーションが含まれているので、ゆっくり動くのが特徴です。色をつけて背景にすることもできますし、写真のフレームのような使い方もできます。

画像はラ

元記事を表示

Xcode13で作成したプロジェクトにInfo.plistがないor あるが中の項目がほとんどない

Xcode13で作成したStoryboardプロジェクトはInfo.plistにほぼ項目がなく(SceneDelegate関連の1項目のみ)、SwiftUIアプリに至っては初期状態ではInfo.plistがありません。

代わりにTarget > Infoや、Target > build settingsから、過去にはInfo.plistで設定していた項目も変更できるようです。

https://developer.apple.com/documentation/xcode-release-notes/xcode-13-release-notes

> Resolved Issues
Projects created from several templates no longer require configuration files such as entitlements and Info.plist files. Configure common fields in the target’s Info tab, and build settings in the proje

元記事を表示

Xcode13になってXcodegenのインストールが失敗する Sources/Spectre/XCTest@4.swift’: File not found.

最近XcodeGenのインストールが失敗するようになりました。mintを使ってXcodeGenをインストールしているんですが、 以下のようなエラーが出ました。

“`
‘Spectre’ /private/var/folders/59/hx744wtd3h5d9nc5c17frm_m0000gp/T/mint/github.com_yonaskolb_XcodeGen/.build/checkouts/Spectre: warning: Invalid Exclude ‘/private/var/folders/59/hx744wtd3h5d9nc5c17frm_m0000gp/T/mint/github.com_yonaskolb_XcodeGen/.build/checkouts/Spectre/Sources/Spectre/XCTest@4.swift’: File not found.
“`

Swift コマンドラインインターフェース関係の問題だったようでXcodegen公式で対応されていました。

https://github.com/yonaskolb/XcodeG

元記事を表示

GitHub – ローカルのXcodeProjectをgithubにあげます

iOSのプロジェクトをgithubで管理したい時、まずgithubにあげるでしょう。これで自分のやり方を共有いたします。
#Step1:githubで新しいレポジトリを作成する
まずgithubのこのNewを押して
![截圖 2021-10-24 20.13.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1326861/e40b878f-f363-d93d-a136-7adae582e6fc.png)
Repository nameは普通プロジェクト名と同じでいいです。
![截圖 2021-10-24 21.51.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1326861/63d56550-50c7-fae3-4eec-11de682d91c0.png)
#Step2:ProjectにGit Repositoryあるかどうかを確認する
タミナールを開いて、Projectのフォルダーに行って **git re

元記事を表示

OTHERカテゴリの最新記事