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

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

flutter_riverpodでアプリをMVVMにする

前回のログインアプリをflutter_riverpodを使用して、MVVM風にリファクタしてみました。
前回作成したアプリ(https://qiita.com/yufuku/items/24dac97e6052b2571386)
設計方針については下記を参考にさせていただきました。
https://github.com/wasabeef/flutter-architecture-blueprints

今回のゴールはview(ui)側で実装していた処理をviewModelに移行して、view側ではstateを持たないようにすることです。

最初のフォルダ構成とコードは下記になります。

“`shell
└──lib
   ├── main.dart
   ├── requester
   │   └── requester.dart
   └── ui
   ├── hello.dart
   └── login.dart
“`

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

元記事を表示

手順メモ NiftyのセカンドメールをiPhoneから使えるようにする

# はじめに
すごくマイナーな話で、なかなかネットに情報がなかったので、自分用メモ

# Nifty側設定
最初にNifty側で、セカンドメールのメールアカウントに対してimapを有効にする。
(popでも設定できそうだがこちらの方が便利なので。)

名前 (任意)
メール (メールアドレス)
説明 (任意)

受信メールサーバー
ホスト名 imap.nifty.com
ユーザー名 (メールアドレス)
パスワード (パスワード)

送信メールサーバー (詳細画面に)
smtp.nifty.com
SSL 使用
認証 パスワード
サーバーポート 993

元記事を表示

[swiftUI]せっかくなのでアドベントカレンダーが作りたい(後編)

#前回までのおさらい
####概要
こちらは会社のアドベントカレンダーを書く企画に便乗してアドベントカレンダーを作ってみたい記事の後編です。
前編は [こちら](https://qiita.com/mame3/items/6187f393d3d64c9e3a95 “[swiftUI]せっかくなのでアドベントカレンダーが作りたい(前編)”)。

####前編の最後の進捗
~~1.1日~25日までのボタンを配置する~~
~~2.ボタンをタップすることでモーダル表示されるようにする~~
3.モーダルで何かしらの表示をする ←今回はここからやっていきます。
4.もし当日以降の日付がタップされた場合、「まだ開けられないよ!」と表示する

#3.モーダルで何かしらの表示をする

何にしようかな、と悩んだのですが、それぞれの日にちに古今東西の偉人の名言を入れることにしました。
もちろん25日はキリストです。お誕生日なので。
見た目はこんな感じ。
![スクリーンショット 2021-12-11 11.55.33.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

スマホの充電を騙くらかすアプリを作ったらAppleに怒られた話

本記事はクソアプリAdvent Calendar 13日目の記事です。

私は6月からモバイルアプリ開発の道に飛び込んだ新参者です。
普段は個人開発でFlutterでのアプリをひたすら作成しています。

「クソアプリAdvent Calendarとは、なんて素敵な試みだろう、これは参加するしかない!」
そう思い今回初参加させていただきます。

 

本記事では、作成したクソアプリの紹介ののち、
余談としてAppleに怒られた話を致します。
「こんなアプリを作ると、こういうリジェクト理由で割とガチ目に怒られる」
という一つの事例として捉えていただければと思います。

##作成したアプリ##

ちょっと気まずい相手からLINEの連絡先を聞かれ、

「スマホの充電が切れていたらいいのに、、、」

こう思ったことありませんか?

そんな時のために、いつでもどこでも充電切れ画面を表示するアプリを作成しました!

![Android_FeatureGraphic_ja.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

SwiftUIのPull to Refresh実現方法ケース別まとめ

最近iOS開発に復帰した @ruwatana です。[iOS Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ios) の13日目を担当させていただきます :bow:

# SwiftUIでPull to Refreshを実現するには?
SwiftUI自体が提供されてからの歴は非常に浅く、UIKitで実現できていた簡単な機能をSwiftUI上で実現することが難しいケースも少なくありません。

Pull to Refreshの純正APIは、SwiftUI 3.0(iOS 15以降)でようやくサポートされました。
しかし、詳しくは後述しますがまだまだ制約が多い現状です。
そこで、2021年末時点のSwiftUIにおけるPull to Refreshの実現方法とどれを使うべきかのベストプラクティスについてまとめてみたいと思います。

## Case1: Apple純正APIを使う
SwiftUI 3.0 (iOS 15以降) にて、SwiftUIユーザが待ちに待ったPull to Refreshの機能がついに提供されま

元記事を表示

今更聞けない Auto Layout を使うときに考えるべきこと

# 前書き

ご無沙汰しております。[元 Auto Layout 絶対◯すマン](https://qiita.com/lovee/items/7454c9f27638a8e471fa)です。

元、と聞くと、まるで筆者が Auto Layout と和解したかのように見えますが、そんなことは一切ありません。単純に SwiftUI の登場により、アップルが事実上自ら Auto Layout を◯してくれた[^apple-killed-autolayout]から、もう私の役目は果たしたと思って、「元」と名乗っただけです。

[^apple-killed-autolayout]: とは言え、実は少なくとも現在の SwiftUI の場合、裏ではまだ Auto Layout が動いているけどね…あくまでユーザ=エンジニアが直接 Auto Layout と格闘しなくて済んだだけです。

ところが残念ながら、登場して 2 年経ちましたが、SwiftUI がまだまだ UIKit を完全に取っ払えるほど強力とは言えませんしバグや罠もたくさん潜んでいます。筆者自身の個人プロジェクトですら、SwiftUI の

元記事を表示

Swift Package ManagerをiOSで使う時はxcodeprojではなくPackage.swiftで読み込もう

Swift Package Manager(以降SwiftPM)がXcodeで正式サポートされてからCocoaPodsやCarthageからの移行を検討しているプロジェクトが増えてきています。
その際、大方の記事では以下のようにXcodeでパッケージを取り込む方法が紹介されます。

https://dev.classmethod.jp/articles/ios-add-library-with-spm/

https://qiita.com/hironytic/items/09a4c16857b409c17d2c

https://www.yururiwork.net/archives/517

しかし、この方法で移行しようとして2つの課題に当たりました。

1. リポジトリ毎にこの作業をする必要がある
1. 複数のTARGETで同じパッケージを使用する時の動線が分かりづらい
(TARGET -> Build Phases -> Link Binary With Librariesから追加できる)

特に長く続いたプロジェクトでは当然それだけ多くのライブラリをCocoaPod

元記事を表示

【Flutter】日々のスキマ時間で、7日間でiOSアプリのリリース



## はじめに
この記事はGAOGAO Advent Calendar 2021 ことしもGAOGAOまつりです の11日目の記事です。
昨日は、「[エンジニアの自分がなぜデザインに目覚めたのか](https://note.com/shimataro/n/n2955689946b9)」でした。

こんにちは。
世界中でモノつくりの連鎖を起こすスタートアップスタジオGAOGAOでソフトウェアエンジニアをしているしまむら([@smtrdev](twitter.com/smtrdev))です。

記事の公開が遅れてしまい申し訳ありま

元記事を表示

【SwiftUI】通知バナーのようなUIを作ってみた

## バナーを出したい
こんな感じの記述方法で簡単に画面上部にスライドインでバナーを出したい

“`swift
View
.bannerVisible(with: Binding)
“`

## できたもの

元記事を表示

iPhoneのフォトライブラリから複数写真を選択【PHPickerViewController】

2020リリースのPHPickerViewController。

#UIImagePickerControllerとなにがちがうか

**複数枚取得
アルバムへのアクセス
検索機能
プライバシー許可がいらない**

アプリでフォトライブラリーの全ての写真を取得するのではなく、
シェアピッカーからユーザーが選んだ写真だけをアプリに渡します。


【複数枚選択】

###PHPickerの設定と表示

PhotosUIをインポートし、使用するクラスにPHPickerViewControllerDelegateを継承させます。

“`swift
import PhotosUI

class ViewController: UIViewController,PHPickerViewControllerDelegate {

元記事を表示

SCNViewの描画結果をPIPで表示する

# SCNView の描画結果を PIP で表示する
* SCNView の描画結果を AVPictureInPictureController を使って PIP で表示させる方法です
~~アプリがバックグラウンドの時に更新されないので有用性は未知数ですが、、、(止まるの忘れてました)~~