Swift・iOS

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

Swift

【Swift】UICollectionView/APIから画像URLを取得して画像を表示

APIから画像URLを取得して画像をダウンロードし、UICollectionViewに表示するサンプルを実装してみました。 ※APIはPixabay APIを使用しています。 https://pixabay.com/ja/ ※2019/11 追記 以下記事でページネーションを実装しました。 www.hfoasi8fje3.work …

【Swift】横スクロールするページをStoryboardで実装する

コードで実装する横スクロールについては、以前に下記記事で取り上げました。 今回はStoryboardで横スクロールを実装する方法について教えていただいたので、備忘も兼ねて記事に残します。 ・【Swift】横スクロールするページを実装する(UIScrollView/UIPage…

【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を選択して再度画像を表示」を繰り返すと、メモリが微増していくではありませんか・…

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

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

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

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

【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のページなのに表示できないもの(画面が真っ白にな…

【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…

【Swift】Swift4でJSONのパース(SwiftyJSONを使わない方法)

■はじめに 以前、【Swift】APIからPOSTでデータ取得する(Alamofire/SwiftyJSON) - Swift実践ブログでAlamofireとSwiftyJSONを使いましたが、今回はSwiftyJSONを使わずにパースしてみました。 ■開発環境 ・Xcode9.3.1 ・Swift4.1 ■実装部分 今回はOpenWeather…

【Swift】ジェネリクスとは

■はじめに GitHubに上がっているコードを読んでいたところ、ジェネリクスが使われていたので調べてみました。 ■ジェネリクスとは 「配列型やディクショナリ型(辞書)でも型に左右されずに値を格納したり取り出すことが可能」 「型を気にせずにさまざまな処…

【Swift】Swift4でチャットボットを作る(Repl-AI)

■はじめに AIチャットボット作成サービス「Repl-AI」のAPIを利用して、以下記事で作ったチャットアプリへチャットボットの機能を追加してみました。 【Swift】Swift4でチャットアプリを作る(JSQMessagesViewController/Firebase) - Swift実践ブログ ※本記…

【Swift】APIからPOSTでデータ取得する(Alamofire/SwiftyJSON)

■はじめに AlamofireとSwiftyJSONを使いGET通信でデータ取得をしたことはあったものの、POST通信ではやったことがなかったので、今回取り組んだ内容を記事に残します。 ■開発環境 ・Xcode9.3.1 ・Swift4.1 ■実装部分 // {}にはクエストURLを記述 let URL = "…