Submit Search
About SnapKit - Open source lab -
0 likes
•
1,231 views
D
Daisuke Yamashita
autolayout DSL library
Engineering
Read more
1 of 22
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
More Related Content
What's hot
(20)
PPT
Node.js で Web アプリ開発
Tatsumi Naganuma
PDF
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
Seiko Kuchida
PDF
Hello, Node.js
Shin Sekaryo
PDF
Ember コミュニティとわたし
Ryunosuke SATO
PPTX
Node.jsではじめるサーバ構築
AimingStudy
PDF
TypeScriptへの入口
Sunao Tomita
PDF
a-blog cmsのインポート機能を使いこなす
Seiko Kuchida
PDF
jQueryを中心としたJavaScript
hideaki honda
PDF
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
PPTX
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Hiroyuki Kusu
PDF
Node js 入門
Satoshi Takami
PDF
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
PDF
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
PDF
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
Horiguchi Seito
PDF
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
PDF
Jaws ug shimane-1
Mutsumi IWAISHI
PPTX
Type scriptmemo
ytanno
PDF
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
PDF
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Takuro Sasaki
PDF
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
Node.js で Web アプリ開発
Tatsumi Naganuma
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
Seiko Kuchida
Hello, Node.js
Shin Sekaryo
Ember コミュニティとわたし
Ryunosuke SATO
Node.jsではじめるサーバ構築
AimingStudy
TypeScriptへの入口
Sunao Tomita
a-blog cmsのインポート機能を使いこなす
Seiko Kuchida
jQueryを中心としたJavaScript
hideaki honda
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Hiroyuki Kusu
Node js 入門
Satoshi Takami
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
Horiguchi Seito
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
Jaws ug shimane-1
Mutsumi IWAISHI
Type scriptmemo
ytanno
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Takuro Sasaki
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
Viewers also liked
(16)
PDF
GarumとMeteoriteと私 3nd Edition ver0.04
Shinobu Okano
PPTX
仕事場改善
osamu miyake
PPTX
SORACOM Update 20151211_SORACOM UG#0
SORACOM,INC
PPTX
Android6.0で変わったアプリのアクセス権について
まえすとろ
PPTX
Githubでアカウントを晒した事故に対する対処
まえすとろ
PDF
10 (about make 10 with 4 numbers challenge)
Takahiro Yoshimura
PDF
JRebel for Android 1.0 を試食してみた
kimukou_26 Kimukou
PPTX
これからの「パーミッション」の話をしよう
ak_shio_555
PDF
20150319 testotipsio
Kazuaki Matsuo
PPTX
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
removed_96f4639f4009e61a478bf38f188e8404
PDF
Android,Brillo,ChromeOS
l_b__
PDF
AndroidLint #DroidKaigi
Yukiya Nakagawa
PDF
明日から使えるRxjava頻出パターン (Droid kaigi 2016)
Kazuki Yoshida
PDF
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
Masataka Kono
PDF
ライブコーディング・Androidのライブラリを作ってみよう
Masataka Kono
PDF
Soracom & myThingsを使ったハンズオンセミナーをやってみた
Kenichi Yoshida
GarumとMeteoriteと私 3nd Edition ver0.04
Shinobu Okano
仕事場改善
osamu miyake
SORACOM Update 20151211_SORACOM UG#0
SORACOM,INC
Android6.0で変わったアプリのアクセス権について
まえすとろ
Githubでアカウントを晒した事故に対する対処
まえすとろ
10 (about make 10 with 4 numbers challenge)
Takahiro Yoshimura
JRebel for Android 1.0 を試食してみた
kimukou_26 Kimukou
これからの「パーミッション」の話をしよう
ak_shio_555
20150319 testotipsio
Kazuaki Matsuo
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
removed_96f4639f4009e61a478bf38f188e8404
Android,Brillo,ChromeOS
l_b__
AndroidLint #DroidKaigi
Yukiya Nakagawa
明日から使えるRxjava頻出パターン (Droid kaigi 2016)
Kazuki Yoshida
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
Masataka Kono
ライブコーディング・Androidのライブラリを作ってみよう
Masataka Kono
Soracom & myThingsを使ったハンズオンセミナーをやってみた
Kenichi Yoshida
Ad
Similar to About SnapKit - Open source lab -
(20)
PDF
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Yuichiro Saito
PDF
1画面から始めるStoryboard
Yuichi Fujishige
PDF
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
PPTX
2016年第一回プレ卒研in山口研
dmcc2015
PDF
Core Graphics on watchOS 2
Shuichi Tsutsumi
PDF
Nullabilityについて
ishikawa akira
PDF
WatchKitを実際にさわってみてわかったこと
Shuichi Tsutsumi
PDF
SwiftとCocoaPodsで始めるサクサクiOS開発!
Koji Shiraishi
PDF
チーム開発にSwiftLintを導入してみた・詳細版
Ikada Kaori
PPTX
Ms build 触ってみよう
Oda Shinsuke
PDF
SwiftでObjective-Cコードに立ち向かう
Toshihiro Suzuki
PDF
Obj-CをSwiftにリプレースするお話
Hitoshi Saito
PDF
WKWebViewとUIWebView
Yuki Hirai
PPTX
BIOSからUEFI
Yasuaki Sera
PDF
javascript を Xcode でテスト
Yoichiro Sakurai
PDF
iOS豆知識ver0.0.5
ppengotsu Name
PDF
How to improve Type-safety in your Objective-C code
Chiharu Nameki
PDF
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
PDF
iOS 9 Bootcamp #6 UIKit
Shingo Hiraya
PDF
20150421 Geeks Night @ Money Foward
Naoki Shimizu
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Yuichiro Saito
1画面から始めるStoryboard
Yuichi Fujishige
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
2016年第一回プレ卒研in山口研
dmcc2015
Core Graphics on watchOS 2
Shuichi Tsutsumi
Nullabilityについて
ishikawa akira
WatchKitを実際にさわってみてわかったこと
Shuichi Tsutsumi
SwiftとCocoaPodsで始めるサクサクiOS開発!
Koji Shiraishi
チーム開発にSwiftLintを導入してみた・詳細版
Ikada Kaori
Ms build 触ってみよう
Oda Shinsuke
SwiftでObjective-Cコードに立ち向かう
Toshihiro Suzuki
Obj-CをSwiftにリプレースするお話
Hitoshi Saito
WKWebViewとUIWebView
Yuki Hirai
BIOSからUEFI
Yasuaki Sera
javascript を Xcode でテスト
Yoichiro Sakurai
iOS豆知識ver0.0.5
ppengotsu Name
How to improve Type-safety in your Objective-C code
Chiharu Nameki
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
iOS 9 Bootcamp #6 UIKit
Shingo Hiraya
20150421 Geeks Night @ Money Foward
Naoki Shimizu
Ad
More from Daisuke Yamashita
(18)
PDF
potatotips_77.pdf
Daisuke Yamashita
PDF
State management for ios development
Daisuke Yamashita
PDF
Static analysis for go lang
Daisuke Yamashita
PDF
Convert the notification feature to the notification microservice
Daisuke Yamashita
PDF
歯磨き.go #2
Daisuke Yamashita
PDF
歯磨き.go Go言語の静的解析とコード生成勉強会
Daisuke Yamashita
PDF
ライブラリを作って5年たったので振り返る
Daisuke Yamashita
PDF
Tensorflow
Daisuke Yamashita
PDF
Introduction of ios-chart in oss-labs#3
Daisuke Yamashita
PDF
View Monitoring Tips
Daisuke Yamashita
PDF
Swift open source library - ViewMonitor -
Daisuke Yamashita
PDF
Let's Start Swift Open Source Activity.
Daisuke Yamashita
PDF
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Daisuke Yamashita
PDF
Unity Introduction from 2D shooting game.
Daisuke Yamashita
PDF
OpenCV on mobile
Daisuke Yamashita
PDF
Introduction of Swift from Machine Learning
Daisuke Yamashita
PDF
Introduction of Swift from Game Development
Daisuke Yamashita
PDF
How to measure UIView position on Native App
Daisuke Yamashita
potatotips_77.pdf
Daisuke Yamashita
State management for ios development
Daisuke Yamashita
Static analysis for go lang
Daisuke Yamashita
Convert the notification feature to the notification microservice
Daisuke Yamashita
歯磨き.go #2
Daisuke Yamashita
歯磨き.go Go言語の静的解析とコード生成勉強会
Daisuke Yamashita
ライブラリを作って5年たったので振り返る
Daisuke Yamashita
Tensorflow
Daisuke Yamashita
Introduction of ios-chart in oss-labs#3
Daisuke Yamashita
View Monitoring Tips
Daisuke Yamashita
Swift open source library - ViewMonitor -
Daisuke Yamashita
Let's Start Swift Open Source Activity.
Daisuke Yamashita
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Daisuke Yamashita
Unity Introduction from 2D shooting game.
Daisuke Yamashita
OpenCV on mobile
Daisuke Yamashita
Introduction of Swift from Machine Learning
Daisuke Yamashita
Introduction of Swift from Game Development
Daisuke Yamashita
How to measure UIView position on Native App
Daisuke Yamashita
About SnapKit - Open source lab -
1.
SnapKitについて オープンソース勉強会 山下大輔
2.
• 自己紹介 https://github.com/daisuke0131 • ビズリーチのiOSエンジニア •
https://github.com/daisuke0131/ ViewMonitor を作っています。星ください。PR 下さい。
3.
use_frameworks! pod 'Bond' pod 'SwiftTask' pod
'Alamofire' pod 'SwiftyJSON' pod 'SwiftCop' pod 'Async' pod 'SDWebImage' ライブラリ的には
4.
What s ViewMonitor
5.
• Masonry(objective-C)のswift版ライブラリ • 独自記述で簡単に書けそう->autoLayoutはコード から書こうと思うとかなり辛い •
シンプルに書けそうなのでちょっとしたときに制 約を追加したりに便利そう SnapKitについて https://github.com/SnapKit/SnapKit
6.
• iOS6から導入されたviewの配置を決める仕組み • view同士の位置を制約を使って設定 •
IB上からポチポチするのがデフォ。 • 画面サイズが変わったときに動的に配置が調整され る • viewの書き換え時に動的にviewの配置換えするのは つらい。-> iOS9から導入されたUIStackViewがこの 辺の課題解決をしてくれそう。 Autolayoutについて
7.
上右左のself.viewに対して 距離0を設定 高さ50を設定
8.
autolayoutで書くと let redView =
UIView() redView.backgroundColor = UIColor.redColor() self.view.addSubview(redView) view.translatesAutoresizingMaskIntoConstraints = false redView.translatesAutoresizingMaskIntoConstraints = false redView.addConstraint( NSLayoutConstraint(item: redView, attribute: .Height, relatedBy: .Equal,toItem: nil, attribute: .Height, multiplier: 1.0, constant: 50.0) ) self.view.addConstraints([ NSLayoutConstraint(item: redView, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1.0, constant: 0.0), NSLayoutConstraint(item: redView, attribute: .Left, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1.0, constant: 0.0), NSLayoutConstraint(item: redView, attribute: .Right, relatedBy: .Equal, toItem: self.view, attribute: .Right, multiplier: 1.0, constant: 0.0), ])
9.
SnapKitで書くと let redView =
UIView() redView.backgroundColor = UIColor.redColor() self.view.addSubview(redView) redView.snp_makeConstraints { (make) -> Void in make.height.equalTo(50) make.top.equalTo(view).offset(0) make.left.equalTo(view).offset(0) make.right.equalTo(view).offset(0) }
10.
IBに配置したviewの制約をいじる IBに配置して コードから autolayout設定 制約通りに配置 例えば以下の様なことがしたい
11.
試すと エラーめっちゃでる。。。
12.
• IBにおいたviewにはいい感じに勝手に autolayoutが設定されるっぽい。 • IB上からuse
autolayoutをoffにしてやるとうま くいく。 • 配置からコードでやる場合は問題ないです。 http://stackoverflow.com/questions/30534850/ prevent-interface-builder-from-auto-creating- constraints 参考) なんで?
13.
UIStackViewを使うと便利になるよ 実行時に要素1 を消す 要素1 を詰めて表示
14.
まとめ • SnapKitはすごく書きやすい • コードで完結させるときには使いやすい •
IBとかと中途半端に連携させるとつらいかも。(制 約をOutletとかで接続するとかの方がよさそう) • ちょっとしたところで使うのはおすすめできない。 • ちょっとしたところはUIStackViewが解決してくれ るとおもうので期待。
15.
Autolayout制約でのエラー
16.
Autolayoutの制約エラー ->発生してもなんとなくいい感じに表示はされます。
17.
ここでシンボリックブレイクポイントを仕込む
18.
expr -l objc++
-O -- [[UIWindow keyWindow] _autolayoutTrace]
19.
Autolayoutの制約矛盾が発生した段階でブレイク
20.
Viewの階層表示
21.
別プロジェクトへの反映方法
22.
http://www.slideshare.net/daisukeyamashita180/21- potatotips-yamashita バグのことは嫌いになってもXcodeのことは嫌いにならないでく ださい。 http://qiita.com/daisuke0131/items/ 82e85e75e766cf08745f Xcodeに関すること
Download