タグ

swiftに関するkorooooonのブックマーク (87)

  • UINavigationControllerと座標ズレの小ネタ - Qiita

    画面遷移にUINavigationControllerを使うことは多いと思いますが、少し注意をしないとレイアウトが思い通りにならないことがあります。 自分の経験に基づいて、注意すべき点を2点あげます。 UINavigationController.navigationBar.isTranslucent ナビゲーションバーを透過にするかのフラグです。と共に、ビューの開始位置を決めるフラグでもあります。標準ではtrueになっています。 追記: コメントで指摘をいただきました。@dokubekoさん、ありがとうございます。 バーのisTranslucentがビューの面積をバーの下までのばすトリガーではありません。 ビューの面積をバーの下まで伸ばすかどうかはビューコントローラのedgesForExtendedLayoutプロパティで指定します。これに関連し、バーが不透明な場合にもそうするかどうかを

    UINavigationControllerと座標ズレの小ネタ - Qiita
    korooooon
    korooooon 2017/06/22
    navigationbar
  • iOSライブラリをまとめてるサイトのまとめ - Qiita

    暇なときに眺めてる、 iOSライブラリを見つける、検索できるサイトをまとめてみました。 眺めているだけでも、流行っているライブラリやUIが確認できるのでオススメなサイト・記事たちです。。。 ※各OSバージョンごとの、リポジトリのまとめは、紹介リポジトリが増えたので、別記事に分離しました。 各iOSバージョンで追加された新機能を速攻で試せる アプリRepository まとめ 2018年これだけは知っておきたいiOSライブラリ31選 これだけは知っておきたいiOSライブラリが紹介されています。 すごくいいです! fantastic-ios-animationUIごとのアニメーションライブラリが、カテゴリー付けされてgithub上にリストアップされています。 Alert/Transition/View/LabelなどやMaterialDesignのライブラリまで、綺麗にまとまっている感じで

    iOSライブラリをまとめてるサイトのまとめ - Qiita
    korooooon
    korooooon 2017/05/30
    animation
  • アニメーション付きのボタンを実装するためのテクニック - Qiita

    林です。 個人的な話ですが10日ほど入院していまして、 入院というのは、人生で初めて経験しましたが、死ぬほど暇なんですね。 暇な時間を使って、dribbbleにありそうなアニメーション付きのボタンを実装してみました。 無事インターネットのある世界に戻ってきたので、公開します。 ベースはUIControl 基的なところから。 自前のボタンを実装する時はUIButtonではなく、UIControlを継承します。 UIButtonではないですよ。UIControlです。 自前のUIコンポーネントを実装する時に、機能豊富なクラスを継承すると、不要な機能を殺すために苦労する羽目になりがちです。 必要最小限のクラスを使うのが結局のところ近道になります。 押下時の表示変更はisHighlightedをトリガーに GestureRecognizerとか、setAction:とか使わない 毎回、isSel

    アニメーション付きのボタンを実装するためのテクニック - Qiita
    korooooon
    korooooon 2017/05/30
    animation
  • SwiftのExtensionをモダンでオシャレに実装する - Qiita

    のように書いているExtensionを以下のようにオシャレに書くことができる、ということを解説します。 長くなってんじゃねーか。 と、思うかもしれませんが、こうすることによって型に含まれる標準的な機能と拡張機能を明確に区別することができます。 ちょっと便利。ちょっと。 Extensionをどうやって定義するか問題 なぜこのような話をするのかというと、Extensionをどうやって定義するかが問題になったりするからです。小さな問題ではあるんですけど。 Extensionは欲しいところに欲しいものを作ることができるので、結構使う機会が多いんじゃないかと思いますが、どこにどうやって定義するかまで考えたいところです。 局所的に使うものであればprivateなりfileprivateなりのアクセスコントロールを使って公開範囲を制限したりするかと思います。 逆にプロジェクト全体で使うようなものに関して

    SwiftのExtensionをモダンでオシャレに実装する - Qiita
    korooooon
    korooooon 2017/05/16
    extension
  • RxSwift + API request + MVVM

    CI/CD for mobile apps at Cookpad / Bitrise & Cookpad Developer Meetup

    RxSwift + API request + MVVM
    korooooon
    korooooon 2017/04/20
    mvvm
  • [RxSwift] 次のmapに任意のオブジェクトを渡す方法 - Qiita

    RxSwiftにて、複数の処理を連結して、特定の結果を得たい場合に mapを複数連結させ、次のmapに任意のオブジェクトも付与して渡したい、というケースも多いと思います。 例えば、複数の非同期処理があって、それぞれ順番に実行し、必要な情報が全部揃ったら、最後の処理を実行する。というイメージです。 このような場合は、mapを利用することで実現出来ます。 create { (observer: AnyObserver<Int>) in observer.onNext(1) observer.onCompleted() return NopDisposable.instance } .flatMap { value in return create { (observer: AnyObserver<Int>) in observer.onNext(value) observer.onComple

    [RxSwift] 次のmapに任意のオブジェクトを渡す方法 - Qiita
    korooooon
    korooooon 2017/04/18
    rxswift
  • Observableをnilでフィルタしてアンラップする - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Observableをnilでフィルタしてアンラップする - Qiita
    korooooon
    korooooon 2017/04/12
    rxswift
  • RxSwiftでTableViewをハックする🏄 - Qiita

    RxSwiftでTableViewをハックする🏄 RxSwiftでTableViewに配列を表示する2つの方法についてまとめてみました。 Observableの配列をTableViewにBindする方法 これが多分最も一般的な方法 ViewModelに定義されているObservableの配列をViewControllerのTableViewにBindする方法 class ViewController: UITableViewController { private let viewModel = ViewModel() override func viewDidLoad() { super.viewDidLoad() viewModel.items .bindTo(tableView.rx.items(cellIdentifier: "Cell", cellType: ItemListV

    RxSwiftでTableViewをハックする🏄 - Qiita
    korooooon
    korooooon 2017/04/11
    rxswift
  • iOS用のCIサービスBitriseを使ってみた - Qiita

    Qiitaの記事で見かけたBitriseを使ってみたところ、とても良いサービスで応援したくなったので紹介記事を書いてみました。 Bitriseの特徴 iOS用のCIサービス 「Bitrise - iOS Continuous Integration and Delivery」と謳っていて、iOSをメインターゲットにしているようです。iOSの面倒なビルド周り(Provisioning Profileや秘密鍵等)の設定も簡単でした。また、Beta版のXcodeにもそれなりに追従しているようです。(2015/09/05にXcode7 beta6へ対応) GitHub以外にも対応 個人的にはBitBucketのプライベートリポジトリで使えるのが嬉しいです。(ストアで公開している個人アプリのソースをここで管理しているので) GUI設定 WorkflowというGUIの設定画面で設定していきます。Wor

    iOS用のCIサービスBitriseを使ってみた - Qiita
    korooooon
    korooooon 2017/03/29
    bitrise
  • ( Swift2 ) Alamofire + ObjectMapper + Realm でリクエストを Realm に自動的に保存する - 炊きたてのご飯が食べたい

    Swift2.2, Xcode, Realm1.0.0 Alamofire と ObjectMapper を利用して API 通信を行っている場合、リクエストが成功した際のレスポンスをそのまま Realm に突っ込んで保存したいケースがあったりします。前回作成した API クライアント(Swift2 Alamofire + ObjectMapper で API クライアントを作成する)を拡張して、リクエストが成功したら結果を自動的に Realm に保存する方法を紹介したいと思います。 Realm への保存を行うメソッドを定義した RealmStorable プロトコルを作成する ObjectMapper の Mappable を採用した Entity に RealmStorable も採用する API のリクエスト成功時の formJson メソッドを拡張して、レスポンスを Realm に

    ( Swift2 ) Alamofire + ObjectMapper + Realm でリクエストを Realm に自動的に保存する - 炊きたてのご飯が食べたい
    korooooon
    korooooon 2017/03/26
    realm
  • Simplifying Login with Swift Enums

    About the content This content has been published here with the express permission of the author. Apps with only one login method limit user options and often lead to negative reviews, but with multiple login options comes great complexity. By using Swift enums, David East demonstrates how we can easily abstract it away to keep our view controllers and login logic clean and simple. Join him in thi

    Simplifying Login with Swift Enums
    korooooon
    korooooon 2017/03/26
    authorization
  • iOSとAndroidで同じようにアプリ開発するための技術比較 - Qiita

    最近iOSアプリとAndroidアプリの両方を開発するようになったのですが、納期が短くエンジニアも少ないのでできる限り開発手法や設計などを同じような形にして開発コストを下げたいと思っています。同じような悩みを持っている人は結構いるんじゃないでしょうか。 ここではiOSとAndroidの両アプリで同じように使えるライブラリなどを紹介していきます。主に自分が使ったことのあるものや聞いたことのあるものを選定しています。実際に自分で使ってみたことのないものもあるので間違っていたらごめんなさい。 個々のライブラリは簡単な紹介のみとなっていますので詳細な使用方法はリンク先等を参照してください。 言語 iOS Android iOSと言えばObjective-c、Androidと言えばJavaだった時代は今は昔。今時のiOS開発といえばSwiftですね。AndroidにもSwiftと類似の文法で開発でき

    iOSとAndroidで同じようにアプリ開発するための技術比較 - Qiita
  • tableViewのheaderというか上部を、下にスクロールした時は固定で、上にやったら上に行くサンプル - Qiita

    import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { var myTableView: UITableView! var myItems: NSMutableArray = [] var myHeaderView: UIView! var statusBarHeight: CGFloat! var displayWidth: CGFloat! var displayHeight: CGFloat! /* ロード後 */ override func viewDidLoad() { super.viewDidLoad() self.setItem() statusBarHeight = UIApplication.sharedApplication().

    tableViewのheaderというか上部を、下にスクロールした時は固定で、上にやったら上に行くサンプル - Qiita
    korooooon
    korooooon 2017/03/17
    tableview
  • [iOS 8] UIPresentationController でカスタムのモーダル表示を実装する | DevelopersIO

    UIPresentationController とは UIPresentationController は iOS 8 から追加された、View Controller の上のレイヤーにモーダルのような形で画面を表示する機能を提供する View Controller です。 iPad ではよく目にする機会が多いですが、下図のように View Controller の上に重なる感じで表示される画面のことです。 このような機能は、これまでは UIPopoverController のように、カスタマイズ不可能な形で提供されていました。iOS 8 では UIPresentationController が追加され、自由な表示・アニメーションのモーダルが表示できるようになりました。 なお、UIPresentationController は抽象クラスで、標準では上記 UIPopoverContro

    [iOS 8] UIPresentationController でカスタムのモーダル表示を実装する | DevelopersIO
  • UICollectionViewControllerとUIPageViewControllerでSmartNewsっぽいあのUIをお手軽に実現する - Qiita

    UICollectionViewControllerとUIPageViewControllerでSmartNewsっぽいあのUIをお手軽に実現するiOSUIKitSwift イントロダクション 国内のメディア系サービスでは割とスタンダードとなっているあのUI。もはや何番煎じかわかりませんが、frame計算とかをしない軽量な実装を試してみます。 ニュース系アプリで利用されているUIの実装を調べることがあったのでまとめてみた - MonockLaBlog あのUIに関する記事やよく見かけるライブラリでは、メニュー要素・コンテンツ要素のframeをずらしながらUIScrollViewへ順に貼り付けていくやり方が多い印象を持っていますが、ここでは違う方法を取ろうと思います。 サードパーティのライブラリに依存することなく、かつViewのリソース管理やframe計算を出来るだけ抑えるため、今回はUIC

    UICollectionViewControllerとUIPageViewControllerでSmartNewsっぽいあのUIをお手軽に実現する - Qiita
  • Pushing the Envelope with iOS 10 Notifications

    About the content This talk was delivered live in September 2016 at try! Swift NYC. The video was recorded, produced, and transcribed by Realm, and is published here with the permission of the conference organizers. Apple made major changes to the Notification APIs in iOS 10, affecting both Push and Local notifications. In this session, you’ll get a high-level overview on what’s changed, what you

    Pushing the Envelope with iOS 10 Notifications
    korooooon
    korooooon 2017/02/17
    push
  • iOSのPUSH通知(APNS)の特徴・ノウハウまとめ(iOS 9まで対応) - Qiita

    今開発しているPlayer!で、チャット系のリアルタイム更新処理が必要となったので、色々調べながらまとめています。 分量が多いので、とりあえずまずは小出しにAppleのPUSH通知の特徴・ノウハウについてまとめたものを公開します。 → 「リアルタイム更新処理」全体にフォーカスした記事も書きましたヽ(・ω・`) iOS - チャットなどリアルタイム更新が必要なスマフォアプリの構成について考えてみた - Qiita アプリが終了状態になっていてもサーバーから通知出来る唯一の手段 まず当たり前のことからですが、最大の特長だと思います。 この理由によって、双方向通信などを併用するにしてもPUSH通知対応は必須です。 (サーバー経由でなければ、位置情報トリガーなど他にもいくつか終了状態から起こす方法は存在します。) ユーザーにPUSH通知を不許可にされたら届かない さらに、初回の確認で不許可にされた

    iOSのPUSH通知(APNS)の特徴・ノウハウまとめ(iOS 9まで対応) - Qiita
    korooooon
    korooooon 2017/02/09
    push通知
  • 「Google丸投げ」でiOSアプリ開発が恐ろしくラクになる!Firebaseの使い方

    Googleが運営するFirebaseを使えば、面倒なサーバーの処理は任せて、クライアント側の開発に集中できます。サンプルアプリを例に、基的な使い方を体験してみましょう。 Firebaseは、アプリを素早く開発しデプロイできるようにするための「Backend as a Service(BaaS)」プラットホームです。Firebaseは多くの機能を提供しています。リアルタイムデータベース、ユーザー認証(Eメールとパスワード、Facebook、TwitterGitHubGoogleアカウントを使用できる)、クラウドメッセージング、ストレージ、ホスティング、リモートコンフィギュレーション、Test Lab、クラッシュレポート、通知、アプリのインデックス付け、ダイナミックリンク、招待、AdWordsとAdMobなどが含まれています。 この記事ではシンプルなToDoアプリを作成しながら、Fir

    「Google丸投げ」でiOSアプリ開発が恐ろしくラクになる!Firebaseの使い方
  • Swiftで受付システムを作った話とCADisplayLink - Qiita

    この記事はVASILY DEVELOPERS BLOGにも同じ内容で投稿しています。よろしければ他の記事も御覧ください。 iQONのiOSアプリはまだ全てObjective-Cで記述されています。 Swiftへの移行については「たいしてパフォーマンスが上がるわけでもないし…」と思って渋っていました。 そんな中、オフィスの移転をきっかけに来客の受付システムをiPadアプリで作ることになりました。 スクラッチでアプリを作るのならSwiftで、ということでSwiftで作りました。 今回は、受付システムの社員を呼び出すデータ通信と、トップページの時計に使ったCADisplayLink実装を紹介します。 完成品 (動画) まずは動画をご覧ください。 呼び出したい社員を選択すると、twilio から各個人の携帯電話に自動音声の電話がかかってきます。 電話呼び出しと同時にSlackにも通知が飛ぶようにな

    Swiftで受付システムを作った話とCADisplayLink - Qiita
    korooooon
    korooooon 2017/02/01
    アニメーション
  • Swiftレター #17

    Swiftにはポインタを表すための型として UnsafePointer とその仲間達があります。CoreFoundationなどC言語のライブラリを使う時などに利用することになります。これらのポインタ型のAPIはとてもよく考えられた素晴… UnsafePointer<T> などについて詳細に説明されています。普通にアプリ書いているとなかなか触れる機会が無いですがいざ使わなきゃいけなくなったときにこういう記事あると良いですね。同じくメモリ周りの濃いめの記事として、Swiftのメモリレイアウトを調べる ・ Swiftのenumのメモリレイアウトの最適化が凄いも書かれていました👀 Swift EvolutionSwift 4メインの開発体制に移行これまでSwift 3.1の開発は master ブランチ上でなされていましたが、1月17日を区切りに swift-3.1-branch ブランチ上で

    Swiftレター #17