Personal Factory

Personal Factory

iOSエンジニアの技術ブログ

iOS

Tips:画面サイズ80%の大きさで画像を置く

Auto Layoutを使って画面サイズより80%の大きさで画像を置くやり方を見ていきたいと思います。 スプラッシュ画面などで、アプリアイコンを表示するときに使えるTipsだと思います。 今回の作るレイアウト 今回作るレイアウトを一度まとめます。 * Image Viewを親ビューに対して垂直方向、水平方向ともに中心に置く * X座標とY座標が決まります。 * Image Viewの幅を親ビューの幅の80%の大きさにする * 幅(Width)が決まります。 * Image Viewのアスペクト比を幅高さ1:1にする * 高さ(Height)が決まります。 つくってみよう! ではさっそく作ってみましょう。 新しくプロジェクトを作成して、Main.storyboardを開きます。 Object LibraryからImage Viewを選んでView Controllerに置きます。 Image Viewを親ビューに対して垂直方向、水平方向ともに中心に置く 置いたImage Viewを選択して、Ctrl + ドラッグをしながら上に移動させて、親ビューと接続します。
3 min read
Auto Layout

レイアウトの救世主Stack Viewを使ってみよう

Auto Layoutには実は重大な欠点がありました。 それは、、 レイアウトの修正が大変 ということです。 レイアウトする要素が増えれば振れるに従って隣のビューとの関係も複雑になってしまいます。 例えば、画面上にボタンを縦に3つ並べるレイアウトを考えてみましょう。 ボタンをそれぞれ同じ大きさに縦に3つ並べるレイアウトを作ってみます。 このとき3つのボタンと親ビューとの関係性はざっと数えた分でも10個できてしまいます。 設定によってはそれ以上になることも考えられるでしょう。 ここで、ボタンを4つに増やしたいと思ったらどうでしょう? 少なくとも垂直方向の関係性は見直す必要があるでしょう。 ボタンが3つから4つになったとこで、親ビューとボタン同士の隙間の幅が変わることになるからです。 これはもう一大事です。 制約を1つずつ見なおしてボタンを増やすか、いっそのこと全ての制約を一度全部解除して、もう一度設定し直すかをしなければいけません。 実際私はこのような場合は制約を全部解除して、全ての制約を設定しなおしていました。 この方が、制約を修正するよりもかえって早いことが
4 min read
iOS

Auto Layoutを始める前に

数年前、iPhone4sが全盛期のころまでは、iOSアプリの開発者は各端末のレイアウトを考える必要はありませんでした。 初代iPhoneからiPhone4sまでは画面サイズは一緒だったからです。 その頃に端末サイズのレイアウトで苦労していたのはAndroidアプリのエンジニアでした。(今もそうですが。。) 各メーカーごとに端末のサイズが異なり、それに合わせてアプリをデザインしなければなりませんでした。 しかし、2010年にiOSで動くタブレット、iPadが発売され、2012年にiPhone5が発売され、iOSエンジニアも各端末ごとのレイアウトをそれぞれで設定しなければいけなくなりました。 以下は、2015年12月現在で発売されているiOS端末の画面サイズの一覧です。 ピクセル解像度は物理的なピクセルを計ったもので、ポイント解像度はプログラムからアクセスする座標系で計った解像度です。 各端末ごとに、異なっていることが一目瞭然です。 異なる画面サイズでも、うまい具合に画面レイアウトができるようにする機能がAuto Layoutです。 iOSエンジニアにとっては避けては通れない重
2 min read
[Swift]作業効率10倍アップ?フォーム作成ライブラリー「Eureka」チュートリアル
Swift

[Swift]作業効率10倍アップ?フォーム作成ライブラリー「Eureka」チュートリアル

UITableViewはアプリを作る上で一番基本になるViewですね。 アプリの設定画面、フォームなどでよく使います。 しかし、作るとなったらいろいろめんどくさいのも事実です。 デリゲートを作って、カスタムセル作って、データソースを管理したり。。。 そんな、UITableViewの面倒なものを一掃する便利なライブラリーがあります。 Eureka [https://github.com/xmartlabs/Eureka]です。 これを使えば、作業効率10倍アップは間違いない、あっと言う間にUITableviewを使った画面が作れちゃいます。 ただ、DSL(ドメイン固有言語)でセルを定義していくので、始めのうちは戸惑うかもしれません。 今回はEurekaライブラリーの使い方をご紹介します。 Eurekaとは? Eurekaはウルグアイのアプリデザイン会社XMARTLABS [http://xmartlabs.com/]が開発をしているオープンソースです。 Swift2で作製されているフォーム作製ライブラリーです。 もともとObjective-C製のXLForm [http
5 min read
Swift

UITableviewに文字列センターのフッターを作る

UITableviewに文字列センターのフッターを作るTipsです。 アプリを作っていく中で、UITableViewの一番最後のセルにセンタリングで、アプリ情報を表示しようと思いました。 UITableViewのデータを管理するプロトコルUITableViewDataSource には` * tableView:titleForFooterInSection:というメソッドがあって、文字列を指定するとフッターに文字を表示してくれます。 始めはこのメソッドで事足りるかなと思ったのですが、なんと- tableView:titleForFooterInSection:`文字のセンタリングはしてくれないんですね。 必ず左詰めになってしまいます。 でもセンター、中央揃えでテキストを表示したいときもあります。 そのやり方を見ていきましょう! 目次 * 実行環境 * UITableviewを作る * - tableView:titleForFooterInSection:を使ってみる * - tableView:viewForFooterInSection:を使
3 min read
Swift

オープンソースになったSwiftをまとめてみた

2015年12月3日、ついにSwiftがオープンソースになったことが発表されました。 8月のWWDCで一番話題になったSwiftのオープンソース化。 (観客の熱気がすごかった!) プラットフォーム * Apple Platforms * 必須環境 OS X 10.11 (El Capitan) Xcode 7.2 (including prerelease versions) * デプロイ可能環境 OS X 10.9.0 or later iOS 7.0 or later watchOS 2.0 or later tvOS 9.0 or later * Linux * 必須環境、デプロイ可能環境 Ubuntu 14.04 or
1 min read
[Swift]アプリ内で設定アプリを開く方法いろいろ
Swift

[Swift]アプリ内で設定アプリを開く方法いろいろ

アプリから設定アプリを開く方法をまとめました。 アプリから設定アプリを直接開く方法はiOS5.0.1まで可能だったそうですが、iOS5.1から禁止になったそうです。 しかしiOS8から復活。直接アプリから設定アプリを開けるようになりました。 通知やモバイルデータ通信など、設定アプリで設定してもらう機会は意外と多いです。そんなとき直接アプリから開けるようになれば、ユーザビリティが向上するでしょう。 それでは見ていきましょう。 実行環境 * Xcode7.2 * OSX Yosemite 10.10.5 * Swift 2.1.1 UIApplicationOpenSettingsURLString を使う UIApplicationクラスで定義されているUIApplicationOpenSettingsURLString という定数を使うとアプリから設定アプリ呼び出せます。 遷移する設定アプリのページは、そのアプリにアプリ固有のプリファレンスがある場合はそのページヘ。プリファレンスがない場合は設定アプリトップに遷移します。 プリファレンスは 呼び出した設定アプリのページ
2 min read
Swift

[swift]UITextFiledでキーボード以外タップでキーボードを非表示にする

細かなUIがUXを向上することはよくあります。 今日ご紹介するTipsはUITextFiledでキーボード以外の領域をタップしたときにキーボードを非表示にする方法です。 Lineなどのメッセンジャーアプリなどでは、キーボード以外の領域をタップした時にキーボードが非表示になるUIがしばしばあります。 このUIを作ってみましょう 実装方法 実装方法はとっても簡単。 ViewControllerのサブクラスにtouchesBeganメソッドをオーバーライドし、以下のコードを書くだけです。 今回はstoryboardからtextFieldというUITextFieldをつなげている想定です。 //ViewController.swift //TextFiledをstoryboardからつなげておく @IBOutlet weak var textField: UITextField! //MARK: キーボードが出ている状態で、キーボード以外をタップしたらキーボードを閉じる override func touchesBegan(touc
1 min read
iOS

[Swift]ナビゲーションバーの色を変更する

Swiftでナビゲーションバーの色を変更するTipsをご紹介します。 実行環境 * Xcode7.1.1 * OSX Yosemite バージョン10.10.5 AppDelegateで変更する場合 ナビゲーションバーのアイテムの色、背景色、タイトル文字色を変更したい場合は、AppDelegate.swiftの``` * application:didFinishLaunchingWithOptions:``` メソッドで以下のような指定をします。 //AppDelegate.swift func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. //ナビゲーションアイテムの色を変更 UINaviga
1 min read

Swiftのmap、辞書編

Swiftを勉強中。 map関数の使い方を覚えたのでメモ 配列の例はたくさんあるけど、辞書でも使えるとのこと。 すごい。 let hoge = map([dictionry]){ [key], [value] in [statements] } {}がクロージャーになっていて、in構文の後ろに処理をかくことができる。 inなんてObjective-Cだとイテレーターでしか見なかったから新鮮。 Teaching App Development with Swift [http://swifteducation.github.io/teaching_app_development_with_swift/] というSwiftの教材の SpaceAdventure Lesson15.pdfでてきた構文。 テキストではこんなコードだった。 let planetData = [ "Mercury": "A very hot planet, closest to the sun.
1 min read
AWS

AWSセミナー参加

AWSセミナーに参加してきました AWSのサービスを紹介するセミナーがアマゾンの日本法人、アマゾン データ サービス ジャパン株式会社主催でありました。 そのレポートをしていきたいと思います。 はじめてのアマゾン ウェブ サービス【7月】 [http://kokucheese.com/event/index/299752/] AWSとは AWSとは、Amazon.com社が主にWeb事業者・開発者向けに提供しているオンラインサービス群の総称です。主にWebサイトやWebサービスの運営者や開発者が必要とするインフラ系のクラウドサービス(IaaS/PaaS/SaaS)を提供しています。 インフラプログラマーでなくても簡単にサーバーの構築ができるので、私も本格的に取り入れようかと思ってセミナーを受けました。 -------------------------------------------------------------------------------- クラウド まずはクラウドサービスの利点からのお話。 **「必要なとき、 必要な量を低価格で」**がキーワド
3 min read