Swift・iOS

Swiftを中心に技術関連の記事を書いています

【Swift】APIからGETでデータを取得/CodableでJSONをデコード

過去に以下の記事で、AlamofireとSwiftyJSONを使った例、SwiftyJSONを使わずにCodableでパースする例を扱いましたが、今回はAlamofireとSwiftyJSON使わない例となります。 https://www.hfoasi8fje3.work/entry/2018/06/03/201000 https://www.hfoasi8fje3.wo…

【Swift】URLSessionでメモリが解放されない原因と対処法

■開発環境 ・Xcode 10.2.1 ・Swift 5.0.1 ■現象 タブAに以下のようにURLSessionを使って画像URLをUIButtonに表示する処理を書いたのですが、その後「タブBを選択」→「タブAを選択して再度画像を表示」を繰り返すと、メモリが微増していくではありませんか・…

【iOS】証明書を更新する時にハマった点とその解決法

※証明書対応に関しては以下記事で丁寧に説明されています。 本記事は以下記事を読んでもうまく行かない方向けになります。 https://qiita.com/natsumo/items/d5cc1d0be427ca3af1cb https://qiita.com/guitar_char/items/7dbd7e2bc35a1fc9e5a0 証明書更新作業…

【Swift】UICollectionView/xibファイルでカスタムセルを作成

以前、UICollectionViewをコードのみで実装する方法を以下の記事で取り上げました。 https://www.hfoasi8fje3.work/entry/2019/02/14/000000 今回は、上記の記事の実装をもとに、カスタムセルをxibで作成し適用する方法を試してみます。 ■開発環境 ・Xcode 1…

【Swift】UIImageView/どの画面サイズでも画像の縦横比を保ったまま全領域を表示させたい(バナー画像のレイアウト)

「どの画面サイズでもバナー画像が切れることなく、縦横比も保ったままレイアウトする方法ってどうすれば良いんだっけ?」とレイアウトわかってない感満載な現象が起こったので、記事に残しておきます。 ■開発環境 ・Xcode 10.2 ・Swift 5.0 ■やりたいこと …

Guideline 2.3.3 - Performance - Accurate Metadataの対処法

アプリ審査で表題の理由でリジェクトされた時の対処法のメモです。 ■リジェクト文 Guideline 2.3.3 - Performance - Accurate Metadata We noticed that your screenshots do not sufficiently reflect your app in use. Specifically, your 12.9-inch iPad …

【Xcode】unable to open file (in target "FBSDKLoginKit" in project "Pods") の対処法

表題のエラー対処に手間取ってしまったためメモ。 ■開発環境 ・Xcode 10.2 ・Swift 5.0 ■エラー内容 Gitでクローンしたプロジェクトをビルドしようとすると以下のエラーが発生。 ※クローン元のプロジェクトは別端末では正常にビルドできる。端末間のバージョ…

【Swift】NukeでURLの画像を表示/キャッシュ

■開発環境 ・Xcode 10.2 ・Swift 5.0 ・Nuke 7.5.1 ■手順 1.Nukeをインストール pod 'Nuke' 2.StoryboardでUIImageViewを配置 3.StoryboardのImageViewをViewControllerに関連づける 4.ViewControllerに以下実装 https://www.hfoasi8fje3.work/entry/2019/03…

【Swift】KingfisherでURLの画像を表示/キャッシュ

■開発環境 ・Xcode 10.2 ・Swift 5.0 ・Kingfisher 4.10.1 ■手順 1.Kingfisherをインストール pod 'Kingfisher' 2.StoryboardでUIImageViewを配置 3.StoryboardのImageViewをViewControllerに関連づける 4.ViewControllerに以下実装 https://www.hfoasi8fje3…

【Swift】URLSessionを使ってURLの画像を取得/キャッシュ

【Swift】UIImageViewにURLの画像を表示する(2) - Swift・iOSの続きです。今回は画像の取得に加えてキャッシュに関する機能を実装してみます。 ■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■手順 1.StoryboardでUIImageViewを配置 2.StoryboardのImageViewをViewC…

【Swift】Ambiguous reference to member 'dataTask(with:completionHandler:)'の解決方法

【Swift】UIImageViewにURLの画像を表示する(2) - Swift・iOSの実装時に出たエラーとその解決方法についてメモ。ただのケアレスミスなのですが、一応記録に残します。 ■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■エラーが出た時のコード このコード一目見て普通…

【Swift】UIImageViewにURLの画像を表示する(2)

【Swift】UIImageViewにURLの画像を表示する(1) - Swift・iOSの続きです。今回はURLSessionを使ってUIImageViewにURLの画像を表示してみます。 ■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■手順 1.StoryboardでUIImageViewを配置 2.StoryboardのImageViewをViewC…

【Swift】UIImageViewにURLの画像を表示する(1)

■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■手順 1.StoryboardでUIImageViewを配置 2.StoryboardのImageViewをViewControllerに関連づける&ViewControllerに以下実装 ・ViewController.swift import UIKit class ViewController: UIViewController { @IBOutlet …

【Swift】Initialization Closureを使ってリファクタリング

【Swift】Initialization ClosureでviewDidLoadの肥大化を防ぐ - Qiitaを参考にさせていただき、過去の記事で使ったサンプルコードをリファクタリングしてみました。 ※サンプルコードは【Swift】Swift4でHMSegmentedControlを試す - Swift・iOSを使っていま…

【Swift】円グラフを描画する(Charts)

■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■サンプルのイメージ ■手順 1.Chartsをインストール pod 'Charts' 2.StoryboardでViewを配置し、Custom Classに「PieChartView」を指定 3.StoryboardのPieChartViewをViewControllerに関連づける&以下実装 ・ViewContr…

【Swift】アニメーション系のライブラリSpringを試す

■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■サンプルのイメージ ■手順 1.Springをインストール pod 'Spring', :git => 'https://github.com/MengTo/Spring.git' 2.StoryboardでUIImageViewを配置し、Custom ClassのClassをSpringImageView、ModuleをSpringに設…

【Swift】自動でスクロールするページを実装する(UIScrollView/Timer)

自動で横にスクロールするページを実装してみました。Storyboardは使わずコードのみで実装しています。 ※UIScrollViewについては以下の記事でも触れています。 ・【Swift】横スクロールするページを実装する(UIScrollView/UIPageControl) - Swift・iOS ・【S…

【Swift】UIScrollViewで無限に左右スクロールできるページを実装する

【Swift】横スクロールするページを実装する(UIScrollView/UIPageControl) - Swift・iOSの続きです。今回は表示する画像をループさせることで無限に左右スクロールできるように実装してみました。 今回もStoryboardは使わずコードのみで実装しています。 ※20…

【Swift】横スクロールするページを実装する(UIScrollView/UIPageControl)

UIScrollViewとUIPageControlを使って横スクロールするページを実装してみました。 Storyboardは使わずコードのみで実装しています。 ※2019/2 追記 UIScrollViewに関しては以下記事でも取り上げています! ・【Swift】UIScrollViewで無限に左右スクロールで…

【Swift】UICollectionViewをコードで実装する

■はじめに ヘッダーとアイコン画像、タイトルを表示するUICollectionViewをコードで実装し、サンプルを作ってみました。 ※2019/05 追記:xibファイルを使った実装については以下の記事で取り上げています。 https://www.hfoasi8fje3.work/entry/2019/05/02/23…

【Swift】Swift4でHMSegmentedControlを試す

■はじめに メルカリのiOSアプリのような横スクロールでメニューを切り替えられるライブラリである、HMSegmentedControlを試してみました。 ■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ・HMSegmentedControl 1.5.5 ■サンプルのイメージ ■実装部分 1.以下HMSegment…

【Swift】WKWebViewでHTMLを表示する

■はじめに WKWebViewでHTMLを表示してみたので記録に残します。 ■開発環境 ・Xcode 10.1 ・Swift 4.2.1 ■サンプル import UIKit import WebKit class ViewController: UIViewController { var webView: WKWebView! var loadString: String = "{ここにHTMLが…

【Swift】WKWebViewで進む/戻る/更新(リロード)機能を実装する

■はじめに スワイプで進む/戻る/更新(リロード)機能を実装してみたのでまとめます。 ■開発環境 ・Xcode 9.4.1 ・Swift 4.1.2 ■進む/戻る機能の実装 インスタンスプロパティ「allowsBackForwardNavigationGestures」で、スワイプで進む/戻る機能を有効にで…

【Swift】WKWebViewでリンク先が開けない場合の対処法(ATS/target=”_blank”)

■はじめに 【Swift】WKWebViewでhttpsのページを表示できない原因(ATS) - Swift実践ブログでは、httpsのページに遷移できない現象について取り上げましたが、今回はリンク先が開けない現象に関してまとめたいと思います。 ■開発環境 ・Xcode 9.4.1 ・Swift…

【Swift】WKWebViewでhttpsのページを表示できない原因(ATS)

■はじめに WKWebViewでhttpsのページを表示できずはまってしまった時に調べたことのまとめ。 ■開発環境 ・Xcode 9.4.1 ・Swift 4.1.2 ■ 現象 httpのページを表示するにはATSの設定が必要ですが、一部httpsのページなのに表示できないもの(画面が真っ白にな…

【Xcode】All Exceptionの設定方法(デバッグ)

■はじめに デバッグでバグの原因を特定するのに役立つAll Exceptionの設定方法についてメモ。 ■環境 ・Xcode 9.4.1 ■設定方法 (1)「Breakpoint Navigator」内にある「Exception Breakpoint」を選択 (2)All Exceptionが設定される ※Break時に原因のログを…

プログラミング未経験からSwiftで事業会社のエンジニアになるまで(学習編)

■はじめに 自分がプログラミングを始める時に、未経験からエンジニアになった体験談を探したのですが、PHPやRubyなどを使ったWebアプリを使ってエンジニアになる話は多いものの、未経験でSwiftを最初に触るパターンはほとんどなかった気がします。 そのため…

【Swift】UserDefaultsを使ってUITextFieldに入力したテキストを自動で保存する

■はじめに 【Swift】UserDefaultsを使ったテキストの保存と読み込み - Swift実践ブログでは、「保存」ボタンを押すことでテキストを保存しました。今回は、「保存」ボタンを使わずに、入力したテキストを自動で保存できるように変更していきたいと思います。…

【Swift】UserDefaultsを使ったテキストの保存と読み込み

■はじめに UserDefaultsを使ったテキストの保存/読み込みについて試したので記事に残します。 ■開発環境 ・Xcode 9.4.1 ・Swift 4.1.2 ■実装 (1)Main.storyboard (2)ViewController.swift import UIKit class ViewController: UIViewController, UITextField…

【Xcode】「iPhone is busy: Preparing debugger support for iPhone」の対処法

■はじめに 表題のエラーに関して、新しいパターンの解決方法を見つけてしまった?のでメモ。 ■環境 ・Xcode 9.4.1 ■基本的な解決方法 今まで、以下3つの方法のいずれかを試せば解決できていました。また、ほとんどのケースがiTunesを終了させることで解決す…