diff --git a/iOS/LiquidFloatingActionButton/samples/LiquidFloatingActionButtonSample/ViewController.cs b/iOS/LiquidFloatingActionButton/samples/LiquidFloatingActionButtonSample/ViewController.cs index 1e361ee314..22f9df44cf 100644 --- a/iOS/LiquidFloatingActionButton/samples/LiquidFloatingActionButtonSample/ViewController.cs +++ b/iOS/LiquidFloatingActionButton/samples/LiquidFloatingActionButtonSample/ViewController.cs @@ -21,12 +21,18 @@ public ViewController(IntPtr handle) public override void ViewDidLoad() { base.ViewDidLoad(); - + + var font = UIFont.SystemFontOfSize(12); + + LiquidFloatingCell.DefaultTitleColor = UIColor.White; + var cells = new List { - new LiquidFloatingCell(UIImage.FromBundle("ic_cloud")), - new LiquidFloatingCell(UIImage.FromBundle("ic_system")), - new LiquidFloatingCell(UIImage.FromBundle("ic_place")), + new LiquidFloatingCell(UIImage.FromBundle("ic_cloud"), "cloud") + .WithTitleFont(font) + .WithTitleColor(UIColor.Green), + new LiquidFloatingCell(UIImage.FromBundle("ic_system"), "system"), + new LiquidFloatingCell(UIImage.FromBundle("ic_place"), "place") }; topLeftButton.Image = UIImage.FromBundle("ic_art"); @@ -36,12 +42,14 @@ public override void ViewDidLoad() { topLeftButton.Close(); }; - + topLeftButton.TitlePosition = TitlePositions.Right; + bottomRightButton.Cells = cells; bottomRightButton.CellSelected += delegate { bottomRightButton.Close(); }; + bottomRightButton.TitlePosition = TitlePositions.Left; } } } diff --git a/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingActionButton.cs b/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingActionButton.cs index b102800460..a892be6e2e 100644 --- a/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingActionButton.cs +++ b/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingActionButton.cs @@ -41,6 +41,8 @@ public class LiquidFloatingActionButton : UIControl private CircleLiquidBaseView baseView = new CircleLiquidBaseView(); private UIView liquidView = new UIView(); + public TitlePositions TitlePosition { get; set; } + public LiquidFloatingActionButton() { Setup(); diff --git a/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingActionButton.csproj b/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingActionButton.csproj index 7959059d2e..f4bd55dfd5 100644 --- a/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingActionButton.csproj +++ b/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingActionButton.csproj @@ -43,6 +43,7 @@ + diff --git a/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingCell.cs b/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingCell.cs index c63ceefaa0..496959eff3 100644 --- a/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingCell.cs +++ b/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/LiquidFloatingCell.cs @@ -28,9 +28,21 @@ public class LiquidFloatingCell : LiquittableCircle private UIImageView imageView; private UIColor originalColor = UIColor.Clear; + private UIFont _titleFont; + private UIColor _titleColor; + + public static UIColor DefaultTitleColor { get; set; } = UIColor.LabelColor; + + public static UIFont DefaultTitleFont { get; set; } = UIFont.SystemFontOfSize(UIFont.SystemFontSize); + + public UIFont TitleFont { get => _titleFont; } + + public UIColor TitleColor { get => _titleColor; } public UIView View { get; private set; } + public UILabel Label { get; private set; } + public LiquidFloatingActionButton ActionButton { get @@ -42,7 +54,7 @@ public LiquidFloatingActionButton ActionButton internal set { actionButton.SetTarget(value); } } - public bool Responsible { get; set; } + public bool Responsible { get; set; } public override void LayoutSubviews() { @@ -56,11 +68,38 @@ public override void LayoutSubviews() } } + public override void WillMoveToSuperview(UIView newsuper) + { + base.WillMoveToSuperview(newsuper); + + Label.Font = _titleFont ?? DefaultTitleFont; + Label.TextColor = _titleColor ?? DefaultTitleColor; + + if (Label != null) + { + var size = (Label.Text + " ").StringSize(Label.Font); + var actionButton = ActionButton; + if (actionButton != null) + { + if (actionButton.TitlePosition == TitlePositions.Left) + Label.Frame = new CGRect(-size.Width, (Frame.Height - size.Height) / 2, size.Width, size.Height); + else + Label.Frame = new CGRect(Frame.Width + (" ").StringSize(Label.Font).Width, (Frame.Height - size.Height) / 2, size.Width, size.Height); + } + } + } + public LiquidFloatingCell(UIImage icon) { Setup(icon); } + public LiquidFloatingCell(UIImage icon, string title) + { + Setup(icon); + SetupLabel(title); + } + public LiquidFloatingCell(UIImage icon, nfloat imageRatio) { this.imageRatio = imageRatio; @@ -72,6 +111,12 @@ public LiquidFloatingCell(UIView view) SetupView(view); } + private void SetupLabel(string title) + { + Label = new UILabel() { Text = title, Alpha = 0 }; + AddSubview(Label); + } + private void Setup(UIImage image, UIColor tintColor = null) { imageView = new UIImageView(); @@ -129,5 +174,18 @@ public override void TouchesEnded(NSSet touches, UIEvent evt) button.OnCellSelected(this); } } + + public LiquidFloatingCell WithTitleFont(UIFont font) + { + _titleFont = font; + return this; + } + + public LiquidFloatingCell WithTitleColor(UIColor color) + { + _titleColor = color; + + return this; + } } } diff --git a/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/TitlePositions.cs b/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/TitlePositions.cs new file mode 100644 index 0000000000..00afdfde35 --- /dev/null +++ b/iOS/LiquidFloatingActionButton/source/LiquidFloatingActionButton/TitlePositions.cs @@ -0,0 +1,10 @@ +using System; + +namespace AnimatedButtons +{ + public enum TitlePositions + { + Left, + Right + } +}