Skip to content

Commit e6fcf38

Browse files
committed
Added ViewWithSafeArea sample to QuickLayout.Touch.
1 parent 3b441ac commit e6fcf38

File tree

6 files changed

+76
-1
lines changed

6 files changed

+76
-1
lines changed

QuickLayout.Core/QuickLayout.Core.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
<Compile Include="ViewModels\AdvancedVerticalStackViewModel.cs" />
5050
<Compile Include="ViewModels\DirectionFormViewModel.cs" />
5151
<Compile Include="ViewModels\RightToLeftViewModel.cs" />
52+
<Compile Include="ViewModels\ViewWithSafeAreaViewModel.cs" />
5253
</ItemGroup>
5354
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
5455
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

QuickLayout.Core/ViewModels/FirstViewModel.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,7 @@ public class FirstViewModel
2424
public void GoDirectionForm() => ShowViewModel<DirectionFormViewModel>();
2525

2626
public void GoRightToLeft() => ShowViewModel<RightToLeftViewModel>();
27+
28+
public void GoViewWithSafeArea() => ShowViewModel<ViewWithSafeAreaViewModel>();
2729
}
2830
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using System;
2+
using MvvmCross.Core.ViewModels;
3+
4+
namespace QuickLayout.Core.ViewModels
5+
{
6+
public class ViewWithSafeAreaViewModel
7+
: MvxViewModel
8+
{
9+
}
10+
}

QuickLayout.Touch/QuickLayout.Touch.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
<None Include="packages.config" />
106106
<Compile Include="Bootstrap\MethodBindingPluginBootstrap.cs" />
107107
<Compile Include="Views\RightToLeftView.cs" />
108+
<Compile Include="Views\ViewWithSafeAreaView.cs" />
108109
</ItemGroup>
109110
<ItemGroup>
110111
<Reference Include="System" />

QuickLayout.Touch/Views/FirstView.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace QuickLayout.Touch.Views
1111
[Register("FirstView")]
1212
public class FirstView : MvxViewController
1313
{
14-
private UIButton _viewForm, _viewFormGrid, _viewDetails, _viewSearch, _viewTip, _viewUpdateConstaints, _viewAdvancedVerticalStack, _fullSize, _directionFormView, _rightToLeft;
14+
private UIButton _viewForm, _viewFormGrid, _viewDetails, _viewSearch, _viewTip, _viewUpdateConstaints, _viewAdvancedVerticalStack, _fullSize, _directionFormView, _rightToLeft, _viewSafeArea;
1515

1616
public override void ViewDidLoad()
1717
{
@@ -62,6 +62,10 @@ public override void ViewDidLoad()
6262
_rightToLeft.SetTitle("Right-To-Left Support", UIControlState.Normal);
6363
Add(_rightToLeft);
6464

65+
_viewSafeArea = new UIButton(UIButtonType.RoundedRect);
66+
_viewSafeArea.SetTitle("View with Safe Area", UIControlState.Normal);
67+
Add(_viewSafeArea);
68+
6569
View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
6670

6771
var set = this.CreateBindingSet<FirstView, FirstViewModel>();
@@ -75,6 +79,7 @@ public override void ViewDidLoad()
7579
set.Bind(_fullSize).To("GoFullSize");
7680
set.Bind(_directionFormView).To("GoDirectionForm");
7781
set.Bind(_rightToLeft).To("GoRightToLeft");
82+
set.Bind(_viewSafeArea).To("GoViewWithSafeArea");
7883
set.Apply();
7984

8085
var constraints = View.VerticalStackPanelConstraints(
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using System;
2+
using Cirrious.FluentLayouts.Touch;
3+
using Foundation;
4+
using MvvmCross.iOS.Views;
5+
using UIKit;
6+
7+
namespace QuickLayout.Touch.Views
8+
{
9+
[Register("ViewWithSafeAreaView")]
10+
public class ViewWithSafeAreaView : MvxViewController
11+
{
12+
public override void ViewDidLoad()
13+
{
14+
base.ViewDidLoad();
15+
16+
View.BackgroundColor = UIColor.FromRGB(248, 191, 120);
17+
18+
var viewContainer = new UIView { BackgroundColor = UIColor.Clear };
19+
20+
var sampleText = new UITextView
21+
{
22+
Editable = false,
23+
Selectable = false,
24+
Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquet massa eu tempus semper. Nulla elementum mi quis erat blandit eleifend. Quisque dictum, sem eget volutpat scelerisque, quam orci lobortis enim, ut luctus enim massa in nisi. Mauris sed mi id leo lacinia lobortis. Integer elementum, erat gravida vestibulum rhoncus, enim velit consectetur est, dignissim condimentum urna turpis ac ex. Nulla arcu mauris, hendrerit nec tortor in, feugiat ullamcorper mauris. Aliquam eget tempus eros. Curabitur suscipit, arcu eu luctus mollis, nunc erat ornare erat, id viverra nisl ligula sit amet ex. Etiam in quam vitae est convallis eleifend. Fusce gravida arcu in orci lobortis pulvinar. Morbi tortor mi, elementum nec purus quis, eleifend imperdiet mi. Nunc commodo et sem vitae finibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc nec erat eget orci malesuada vulputate. \n \nPhasellus vulputate dolor eu massa varius efficitur. Sed sed tortor eu elit ornare mollis id non sapien. Nam at turpis volutpat ligula aliquam aliquet placerat sed purus. Phasellus magna urna, maximus vitae erat et, malesuada tincidunt velit. Mauris efficitur velit fermentum imperdiet convallis. In eget erat nisi. Curabitur ut leo sodales, consectetur lorem ut, iaculis est. Nullam ornare, justo id condimentum pharetra, enim nisl posuere ex, a fermentum justo enim sit amet dolor. Sed suscipit sapien augue, nec dignissim nisl laoreet eu. Maecenas eros enim, aliquet vitae arcu id, fermentum dignissim lorem. Etiam sit amet commodo nunc. In vitae ullamcorper velit. Integer in mauris eget erat mattis feugiat at id neque.",
25+
TextColor = UIColor.Black,
26+
BackgroundColor = UIColor.Clear
27+
};
28+
sampleText.TextContainer.LineBreakMode = UILineBreakMode.WordWrap;
29+
sampleText.Font = UIFont.BoldSystemFontOfSize(18f);
30+
31+
View.AddSubview(viewContainer);
32+
viewContainer.AddSubview(sampleText);
33+
34+
View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
35+
viewContainer.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
36+
37+
View.AddConstraints(
38+
viewContainer.AtLeftOf(View),
39+
viewContainer.AtTopOf(View),
40+
viewContainer.AtRightOf(View),
41+
viewContainer.AtBottomOf(View)
42+
);
43+
44+
viewContainer.AddConstraints(
45+
sampleText.AtTopOf(viewContainer),
46+
// sampleText.AtTopOfWithSafeArea(viewContainer), -> use this when UINavigationBar not present to avoid content overlap under iPhone X notch
47+
sampleText.AtLeftOfWithSafeArea(viewContainer),
48+
//sampleText.AtLeftOf(viewContainer), -> if this is used, content overlaps under notch on landscape
49+
sampleText.AtRightOfWithSafeArea(viewContainer),
50+
//sampleText.AtRightOf(viewContainer), -> if this is used, content overlaps under notch on landscape
51+
sampleText.AtBottomOfWithSafeArea(viewContainer)
52+
//sampleText.AtBottomOf(viewContainer) -> if this is used, content overlaps under notch on landscape
53+
);
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)