SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Xamarin.iOSでAuto Layoutをコード
から書く際に便利なライブラリ
2018/11/23
.NETラボ 勉強会 2018年11月
なかしょ(中島進也)
Profile
• 名前:なかしょ(中島 進也)
• Twitter:@nakasho_dev
• ブログ:なかしょの技術日誌
http://nakasho-dev.hatenablog.jp/
• 最近の興味
TDD、アジャイル開発、Xamarin、Chatbot、Tizen
• 主な参加コミュニティ
JXUG、.NETラボ、Cogbot、Teratail、TestNight
※本資料は私個人の意見であり、所属企業・部門見解を代表するもの
ではありません。
2
Xamarin.iOSでInterface Builder
3
StoryBoardのXML
4
StoryBoardを使うときに発生するデメリット
• チーム開発においてGitのコンフリクトがほぼ確実に発生して、
XMLを編集するよりInterface Builderで作り直したほうが良
いレベル。
• Dependency Injectionができない
• ソースコードとの関係性が良く分からない
5
コードでAutoLayoutを記述すると...
translatedLabel.HeightAnchor.ConstraintEqualTo(20).Active =
true;
translatedLabel.CenterXAnchor.ConstraintEqualTo(View.CenterX
Anchor).Active = true;
translatedLabel.TopAnchor.ConstraintEqualTo(translateButton.Bo
ttomAnchor, 20).Active = true;
translatedLabel.LeftAnchor.ConstraintEqualTo(View.LayoutMargi
nsGuide.LeftAnchor).Active = true;
translatedLabel.RightAnchor.ConstraintEqualTo(View.LayoutMarg
insGuide.RightAnchor).Active = true;
6
ラベル一つで
こんなに設定が必要
参考:https://github.com/TomohiroSuzuki128/XamAppCenterSample2018
一つの画面に制約ってたくさんあるよね...
7
英語を入力してください
I Have a pen.
変換結果
私はペンを持つ
日本語に変換
英語を入力してください
I Have a pen.
変換結果
私はペンを持つ
日本語に変換
そこでCirrious.FluentLayout
8
Easy API for using
AutoLayout in iOS
コードが短く直感的に書ける
View.AddConstraints(
translatedLabel.Height().EqualTo(20),
translatedLabel.WithSameCenterX(View),
translatedLabel.AtTopOf(translateButton, 20),
translatedLabel.ToLeftMargin(View),
translatedLabel.ToRightMargin(View)
);
9
参考:https://github.com/FluentLayout/Cirrious.FluentLayout
AutoLayoutのコーディング支援ライブラリ
• Cirrious.FluentLayout
https://github.com/FluentLayout/Cirrious.FluentLayout
• Masonry
https://github.com/xamarin/XamarinComponents/tree/master/iO
S/Masonry
• PureLayout.Net
https://github.com/mallibone/PureLayout.Net
• SnapKit.Xamarin
https://github.com/Tylerian/SnapKit.Xamarin
10
AutoLayoutをコードで書く際の注意点
• UIKit のAPIの仕様変更時にコードの修正が必要
Interface Builderを使っていたら自動で対応できることが多い
支援ライブラリがすぐに対応してくれると負担は減る
• AutoLayoutの制約違反が実行時にしか分からない
Interface Builderを使っていたら編集時に分かる
• 支援ライブラリの更新が止まるリスク
11
ご清聴ありがとうございました。
なかしょ(中島 進也)
@nakasho_dev
12

Weitere ähnliche Inhalte

Mehr von Shinya Nakajima

Mehr von Shinya Nakajima (20)

GitHub ActionsでiOSのCIを実現しよう
GitHub ActionsでiOSのCIを実現しようGitHub ActionsでiOSのCIを実現しよう
GitHub ActionsでiOSのCIを実現しよう
 
Visual Studio App CenterにmBaaS機能が増えてきた
Visual Studio App CenterにmBaaS機能が増えてきたVisual Studio App CenterにmBaaS機能が増えてきた
Visual Studio App CenterにmBaaS機能が増えてきた
 
Visual Studio App Center Authの導入方法について
Visual Studio App CenterAuthの導入方法についてVisual Studio App CenterAuthの導入方法について
Visual Studio App Center Authの導入方法について
 
ペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おうペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おう
 
AzureDevOpsで始めるAndroidのCI/CD
AzureDevOpsで始めるAndroidのCI/CDAzureDevOpsで始めるAndroidのCI/CD
AzureDevOpsで始めるAndroidのCI/CD
 
社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう
 
CI/CD専用モニタと心理的安全性
CI/CD専用モニタと心理的安全性CI/CD専用モニタと心理的安全性
CI/CD専用モニタと心理的安全性
 
Visual Studio App CenterでAndroid開発にCI/CDを導入しよう
Visual Studio App CenterでAndroid開発にCI/CDを導入しようVisual Studio App CenterでAndroid開発にCI/CDを導入しよう
Visual Studio App CenterでAndroid開発にCI/CDを導入しよう
 
Visual Studio App Centerで始めるCI/CD
Visual Studio App Centerで始めるCI/CDVisual Studio App Centerで始めるCI/CD
Visual Studio App Centerで始めるCI/CD
 
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
Visual Studio App CenterでGitHubのIssue発行を自動化しようVisual Studio App CenterでGitHubのIssue発行を自動化しよう
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
 
Visual Studio App CenterでGitHubのPull Requestを効率よく対応しよう
Visual Studio App CenterでGitHubのPull Requestを効率よく対応しようVisual Studio App CenterでGitHubのPull Requestを効率よく対応しよう
Visual Studio App CenterでGitHubのPull Requestを効率よく対応しよう
 
アジャイル開発を円滑に進めるVisual Studio App Center
アジャイル開発を円滑に進めるVisual Studio App Centerアジャイル開発を円滑に進めるVisual Studio App Center
アジャイル開発を円滑に進めるVisual Studio App Center
 
Visual Studio App Centerの始め方
Visual Studio App Centerの始め方Visual Studio App Centerの始め方
Visual Studio App Centerの始め方
 
アジャイル開発のストーリーをGherkin記法で作成
アジャイル開発のストーリーをGherkin記法で作成アジャイル開発のストーリーをGherkin記法で作成
アジャイル開発のストーリーをGherkin記法で作成
 
docomo Developer Supportを活用しよう
docomo Developer Supportを活用しようdocomo Developer Supportを活用しよう
docomo Developer Supportを活用しよう
 
Xamarinで地図を使おう
Xamarinで地図を使おうXamarinで地図を使おう
Xamarinで地図を使おう
 
Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)
 
Visual Studio App Centerで始めるCI/CD(Android)
Visual Studio App Centerで始めるCI/CD(Android)Visual Studio App Centerで始めるCI/CD(Android)
Visual Studio App Centerで始めるCI/CD(Android)
 
いつか言いたい『こんなこともあろうかと』
いつか言いたい『こんなこともあろうかと』いつか言いたい『こんなこともあろうかと』
いつか言いたい『こんなこともあろうかと』
 
今こそ Microsft Bot Framework を学ぼう
今こそ Microsft Bot Framework を学ぼう今こそ Microsft Bot Framework を学ぼう
今こそ Microsft Bot Framework を学ぼう
 

Xamarin.iOSでAuto Layoutをコードから書く際に便利なライブラリ