ui adjustment
This commit is contained in:
53
Pixiview.iOS/Renderers/CardViewRenderer.cs
Normal file
53
Pixiview.iOS/Renderers/CardViewRenderer.cs
Normal file
@ -0,0 +1,53 @@
|
||||
using CoreGraphics;
|
||||
using Pixiview.iOS.Renderers;
|
||||
using Pixiview.UI;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(CardView), typeof(CardViewRenderer))]
|
||||
namespace Pixiview.iOS.Renderers
|
||||
{
|
||||
public class CardViewRenderer : VisualElementRenderer<CardView>
|
||||
{
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<CardView> e)
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
|
||||
var layer = Layer;
|
||||
var element = e.NewElement;
|
||||
if (layer != null && element != null)
|
||||
{
|
||||
var cornerRadius = element.CornerRadius;
|
||||
if (cornerRadius > 0)
|
||||
{
|
||||
layer.CornerRadius = cornerRadius;
|
||||
}
|
||||
|
||||
//if (element.BackgroundColor != default)
|
||||
//{
|
||||
// layer.BackgroundColor = element.BackgroundColor.ToCGColor();
|
||||
//}
|
||||
|
||||
var shadowColor = element.ShadowColor;
|
||||
if (shadowColor != default)
|
||||
{
|
||||
layer.ShadowColor = shadowColor.ToCGColor();
|
||||
layer.ShadowOpacity = 1f;
|
||||
|
||||
var radius = element.ShadowRadius;
|
||||
if (radius > 0)
|
||||
{
|
||||
layer.ShadowRadius = radius;
|
||||
}
|
||||
|
||||
layer.ShadowOffset = element.ShadowOffset.ToSizeF();
|
||||
}
|
||||
else
|
||||
{
|
||||
layer.ShadowOpacity = 0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -12,9 +12,10 @@ namespace Pixiview.iOS.Renderers
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
|
||||
if (Control != null)
|
||||
var layer = Layer;
|
||||
if (layer != null)
|
||||
{
|
||||
Control.Layer.MasksToBounds = true;
|
||||
layer.MasksToBounds = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,9 +23,10 @@ namespace Pixiview.iOS.Renderers
|
||||
{
|
||||
base.LayoutSubviews();
|
||||
|
||||
if (Control != null)
|
||||
var control = Control;
|
||||
if (control != null)
|
||||
{
|
||||
Control.Layer.CornerRadius = Control.Frame.Size.Width / 2;
|
||||
control.Layer.CornerRadius = control.Frame.Size.Width / 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
56
Pixiview.iOS/Renderers/RoundImageRenderer.cs
Normal file
56
Pixiview.iOS/Renderers/RoundImageRenderer.cs
Normal file
@ -0,0 +1,56 @@
|
||||
using CoreAnimation;
|
||||
using Pixiview.iOS.Renderers;
|
||||
using Pixiview.UI;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(RoundImage), typeof(RoundImageRenderer))]
|
||||
namespace Pixiview.iOS.Renderers
|
||||
{
|
||||
public class RoundImageRenderer : ImageRenderer
|
||||
{
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
|
||||
var layer = Layer;
|
||||
if (layer != null && e.NewElement is RoundImage image)
|
||||
{
|
||||
bool flag = false;
|
||||
if (image.CornerRadius > 0)
|
||||
{
|
||||
layer.CornerRadius = image.CornerRadius;
|
||||
flag = true;
|
||||
}
|
||||
var mask = image.CornerMasks;
|
||||
if (mask != CornerMask.None)
|
||||
{
|
||||
var m = default(CACornerMask);
|
||||
if ((mask & CornerMask.LeftTop) == CornerMask.LeftTop)
|
||||
{
|
||||
m |= CACornerMask.MinXMinYCorner;
|
||||
}
|
||||
if ((mask & CornerMask.RightTop) == CornerMask.RightTop)
|
||||
{
|
||||
m |= CACornerMask.MaxXMinYCorner;
|
||||
}
|
||||
if ((mask & CornerMask.LeftBottom) == CornerMask.LeftBottom)
|
||||
{
|
||||
m |= CACornerMask.MinXMaxYCorner;
|
||||
}
|
||||
if ((mask & CornerMask.RightBottom) == CornerMask.RightBottom)
|
||||
{
|
||||
m |= CACornerMask.MaxXMaxYCorner;
|
||||
}
|
||||
|
||||
layer.MaskedCorners = m;
|
||||
flag = true;
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
layer.MasksToBounds = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -13,14 +13,22 @@ namespace Pixiview.iOS.Renderers
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
|
||||
if (Control != null && Element is RoundLabel label)
|
||||
var layer = Layer;
|
||||
if (layer != null && e.NewElement is RoundLabel label)
|
||||
{
|
||||
int radius = label.CornerRadius;
|
||||
var radius = label.CornerRadius;
|
||||
if (radius > 0)
|
||||
{
|
||||
Control.Layer.CornerRadius = radius;
|
||||
Control.BackgroundColor = label.BackgroundColor.ToUIColor();
|
||||
Control.Layer.MasksToBounds = true;
|
||||
layer.CornerRadius = radius;
|
||||
//layer.MasksToBounds = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
layer.CornerRadius = 0;
|
||||
}
|
||||
if (layer.BackgroundColor != default)
|
||||
{
|
||||
layer.BackgroundColor = label.BackgroundColor.ToCGColor();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -31,14 +39,15 @@ namespace Pixiview.iOS.Renderers
|
||||
|
||||
if (e.PropertyName == RoundLabel.CornerRadiusProperty.PropertyName)
|
||||
{
|
||||
if (Control != null && Element is RoundLabel label)
|
||||
var layer = Layer;
|
||||
if (layer != null && Element is RoundLabel label)
|
||||
{
|
||||
int radius = label.CornerRadius;
|
||||
var radius = label.CornerRadius;
|
||||
if (radius > 0)
|
||||
{
|
||||
Control.Layer.CornerRadius = radius;
|
||||
Control.BackgroundColor = label.BackgroundColor.ToUIColor();
|
||||
Control.Layer.MasksToBounds = true;
|
||||
layer.CornerRadius = radius;
|
||||
layer.BackgroundColor = label.BackgroundColor.ToCGColor();
|
||||
//layer.MasksToBounds = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user