Skip to content

Commit 9f6ecda

Browse files
committed
Merge pull request #11 from brewdente/master
Adding nfloat throughout to prevent possible data loss.
2 parents a3c966e + c4e0ed7 commit 9f6ecda

File tree

4 files changed

+54
-31
lines changed

4 files changed

+54
-31
lines changed

Cirrious.FluentLayout/AdvancedFluentLayoutExtensions.cs

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,41 +5,45 @@
55
//
66
// Project Lead - Stuart Lodge, @slodge, [email protected]
77

8+
using System;
89
using System.Collections.Generic;
910
using UIKit;
1011

1112
namespace Cirrious.FluentLayouts.Touch
1213
{
1314
public static class AdvancedFluentLayoutExtensions
1415
{
15-
public static FluentLayout AtTopOf(this UIView view, UIView parentView, float margin = 0f)
16+
const float DefaultMargin = 0;
17+
const float DefaultScale = 1;
18+
19+
public static FluentLayout AtTopOf(this UIView view, UIView parentView, nfloat? margin = null)
1620
{
17-
return view.Top().EqualTo().TopOf(parentView).Plus(margin);
21+
return view.Top().EqualTo().TopOf(parentView).Plus(margin.GetValueOrDefault(DefaultMargin));
1822
}
1923

20-
public static FluentLayout AtLeftOf(this UIView view, UIView parentView, float margin = 0f)
24+
public static FluentLayout AtLeftOf(this UIView view, UIView parentView, nfloat? margin = null)
2125
{
22-
return view.Left().EqualTo().LeftOf(parentView).Plus(margin);
26+
return view.Left().EqualTo().LeftOf(parentView).Plus(margin.GetValueOrDefault(DefaultMargin));
2327
}
2428

25-
public static FluentLayout AtRightOf(this UIView view, UIView parentView, float margin = 0f)
29+
public static FluentLayout AtRightOf(this UIView view, UIView parentView, nfloat? margin = null)
2630
{
27-
return view.Right().EqualTo().RightOf(parentView).Minus(margin);
31+
return view.Right().EqualTo().RightOf(parentView).Minus(margin.GetValueOrDefault(DefaultMargin));
2832
}
2933

30-
public static FluentLayout AtBottomOf(this UIView view, UIView parentView, float margin = 0f)
34+
public static FluentLayout AtBottomOf(this UIView view, UIView parentView, nfloat? margin = null)
3135
{
32-
return view.Bottom().EqualTo().BottomOf(parentView).Minus(margin);
36+
return view.Bottom().EqualTo().BottomOf(parentView).Minus(margin.GetValueOrDefault(DefaultMargin));
3337
}
3438

35-
public static FluentLayout Below(this UIView view, UIView previous, float margin = 0f)
39+
public static FluentLayout Below(this UIView view, UIView previous, nfloat? margin = null)
3640
{
37-
return view.Top().EqualTo().BottomOf(previous).Plus(margin);
41+
return view.Top().EqualTo().BottomOf(previous).Plus(margin.GetValueOrDefault(DefaultMargin));
3842
}
3943

40-
public static FluentLayout Above(this UIView view, UIView previous, float margin = 0f)
44+
public static FluentLayout Above(this UIView view, UIView previous, nfloat? margin = null)
4145
{
42-
return view.Bottom().EqualTo().TopOf(previous).Minus(margin);
46+
return view.Bottom().EqualTo().TopOf(previous).Minus(margin.GetValueOrDefault(DefaultMargin));
4347
}
4448

4549
public static FluentLayout WithSameLeft(this UIView view, UIView previous)
@@ -77,41 +81,43 @@ public static FluentLayout WithSameBottom(this UIView view, UIView previous)
7781
return view.Bottom().EqualTo().BottomOf(previous);
7882
}
7983

80-
public static FluentLayout WithRelativeWidth(this UIView view, UIView previous, float scale = 1.0f)
84+
public static FluentLayout WithRelativeWidth(this UIView view, UIView previous, nfloat? scale = null)
8185
{
82-
return view.Width().EqualTo().WidthOf(previous).WithMultiplier(scale);
86+
return view.Width().EqualTo().WidthOf(previous).WithMultiplier(scale.GetValueOrDefault(DefaultScale));
8387
}
8488

8589
public static FluentLayout WithSameHeight(this UIView view, UIView previous)
8690
{
8791
return view.Height().EqualTo().HeightOf(previous);
8892
}
8993

90-
public static FluentLayout WithRelativeHeight(this UIView view, UIView previous, float scale = 1.0f)
94+
public static FluentLayout WithRelativeHeight(this UIView view, UIView previous, nfloat? scale = null)
9195
{
92-
return view.Height().EqualTo().HeightOf(previous).WithMultiplier(scale);
96+
return view.Height().EqualTo().HeightOf(previous).WithMultiplier(scale.GetValueOrDefault(DefaultScale));
9397
}
9498

95-
public static FluentLayout ToRightOf(this UIView view, UIView previous, float margin = 0f)
99+
public static FluentLayout ToRightOf(this UIView view, UIView previous, nfloat? margin = null)
96100
{
97-
return view.Left().EqualTo().RightOf(previous).Plus(margin);
101+
return view.Left().EqualTo().RightOf(previous).Plus(margin.GetValueOrDefault(DefaultMargin));
98102
}
99103

100-
public static FluentLayout ToLeftOf(this UIView view, UIView previous, float margin = 0f)
104+
public static FluentLayout ToLeftOf(this UIView view, UIView previous, nfloat? margin = null)
101105
{
102-
return view.Right().EqualTo().LeftOf(previous).Minus(margin);
106+
return view.Right().EqualTo().LeftOf(previous).Minus(margin.GetValueOrDefault(DefaultMargin));
103107
}
104108

105-
public static IEnumerable<FluentLayout> FullWidthOf(this UIView view, UIView parent, float margin = 0f)
109+
public static IEnumerable<FluentLayout> FullWidthOf(this UIView view, UIView parent, nfloat? margin = null)
106110
{
107-
yield return view.Left().EqualTo().LeftOf(parent).Plus(margin);
108-
yield return view.Right().EqualTo().RightOf(parent).Minus(margin);
111+
var marginValue = margin.GetValueOrDefault(DefaultMargin);
112+
yield return view.Left().EqualTo().LeftOf(parent).Plus(marginValue);
113+
yield return view.Right().EqualTo().RightOf(parent).Minus(marginValue);
109114
}
110115

111-
public static IEnumerable<FluentLayout> FullHeightOf(this UIView view, UIView parent, float margin = 0f)
116+
public static IEnumerable<FluentLayout> FullHeightOf(this UIView view, UIView parent, nfloat? margin = null)
112117
{
113-
yield return view.Top().EqualTo().TopOf(parent).Plus(margin);
114-
yield return view.Bottom().EqualTo().BottomOf(parent).Minus(margin);
118+
var marginValue = margin.GetValueOrDefault(DefaultMargin);
119+
yield return view.Top().EqualTo().TopOf(parent).Plus(marginValue);
120+
yield return view.Bottom().EqualTo().BottomOf(parent).Minus(marginValue);
115121
}
116122

117123
public static IEnumerable<FluentLayout> VerticalStackPanelConstraints(this UIView parentView, Margins margins,

Cirrious.FluentLayout/Cirrious.FluentLayouts.Touch.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
<Compile Include="Properties\AssemblyInfo.cs" />
4242
<Compile Include="RowSet-WorkInProgress\RowSet.cs" />
4343
<Compile Include="UIViewAndLayoutAttribute.cs" />
44+
<Compile Include="NfloatExtensions.cs" />
4445
</ItemGroup>
4546
<ItemGroup>
4647
</ItemGroup>

Cirrious.FluentLayout/FluentLayout.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,23 +48,23 @@ public FluentLayout(UIView view,
4848
public NSLayoutRelation Relation { get; private set; }
4949
public NSObject SecondItem { get; private set; }
5050
public NSLayoutAttribute SecondAttribute { get; private set; }
51-
public float Multiplier { get; private set; }
52-
public float Constant { get; private set; }
51+
public nfloat Multiplier { get; private set; }
52+
public nfloat Constant { get; private set; }
5353
public float Priority { get; private set; }
5454

55-
public FluentLayout Plus(float constant)
55+
public FluentLayout Plus(nfloat constant)
5656
{
5757
Constant += constant;
5858
return this;
5959
}
6060

61-
public FluentLayout Minus(float constant)
61+
public FluentLayout Minus(nfloat constant)
6262
{
6363
Constant -= constant;
6464
return this;
6565
}
6666

67-
public FluentLayout WithMultiplier(float multiplier)
67+
public FluentLayout WithMultiplier(nfloat multiplier)
6868
{
6969
Multiplier = multiplier;
7070
return this;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace System
2+
{
3+
internal static class NfloatExtensions
4+
{
5+
public static nfloat GetValueOrDefault(this nfloat? value)
6+
{
7+
return value.GetValueOrDefault(0);
8+
}
9+
10+
public static nfloat GetValueOrDefault(this nfloat? value, nfloat defaultValue)
11+
{
12+
return null == value ? defaultValue : value.Value;
13+
}
14+
}
15+
}
16+

0 commit comments

Comments
 (0)