LCJ*_*LCJ 0 xamarin.ios xamarin xamarin.forms
我需要增加滑块的尺寸在iOS app使用创建的Xamarin Forms。我尝试使用以下重写的自定义渲染器LayoutSubviews。它增加了尺寸,但是拇指的尺寸却无法接受。如何减小拇指的大小,同时保持滑块的高度增加?
在Android中可能如下所示: 在不影响Android App中拇指的情况下增加滑块的高度
iOS参考:
C#自定义渲染器
[assembly: ExportRenderer(typeof(MySlider), typeof(MySliderRenderer))]
namespace CustomRenderer.iOS
{
class MySliderRenderer : Xamarin.Forms.Platform.iOS.SliderRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
{
base.OnElementChanged(e);
Control.MinimumTrackTintColor = UIColor.FromRGB(0xE6, 0x00, 0x06);
Control.ThumbTintColor = UIColor.Red;
Control.MinimumTrackTintColor = UIColor.Orange;
Control.MaximumTrackTintColor = UIColor.Yellow;
//Control.SetThumbImage(UIImage.FromFile("myicon.png"), UIControlState.Normal);
}
public override void LayoutSubviews()
{
base.LayoutSubviews();
CGAffineTransform transform = CGAffineTransform.MakeScale(1f, 12.0f);
transform.TransformSize(this.Frame.Size);
this.Control.Transform = transform;
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新-参考-渲染器
覆盖TrackRectForBounds更改其高度,而不是更改transform。
在MySliderRenderer中
class MySliderRenderer : SliderRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
{
SetNativeControl(new MySlideriOS());
base.OnElementChanged(e);
}
}
Run Code Online (Sandbox Code Playgroud)
创建UISlider的子类
public class MySlideriOS : UISlider
{
public MySlideriOS() {
this.MinimumTrackTintColor = UIColor.FromRGB(0xE6, 0x00, 0x06);
this.ThumbTintColor = UIColor.Red;
this.MinimumTrackTintColor = UIColor.Orange;
this.MaximumTrackTintColor = UIColor.Yellow;
}
public override CGRect TrackRectForBounds(CGRect forBounds)
{
CGRect rect = base.TrackRectForBounds(forBounds);
return new CGRect(rect.X, rect.Y, rect.Width, 20);
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试
这是样品
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |