Xamarin iOS应用程序中的UISlider滑块尺寸增大,但没有拇指变形
我需要在使用Xamarin iOS应用程序中的UISlider滑块尺寸增大,但没有拇指变形,xamarin,xamarin.ios,xamarin.forms,Xamarin,Xamarin.ios,Xamarin.forms,我需要在使用Xamarin表单创建的iOS应用程序中增加滑块的大小。我尝试使用以下自定义呈现程序来覆盖布局子视图。它增加了尺寸,但拇指的尺寸增加不可接受。如何在保持滑块高度增加的情况下减小拇指的大小 这在Android中是可能的,如下所示: iOS参考资料: C#自定义渲染器 [assembly: ExportRenderer(typeof(MySlider), typeof(MySliderRenderer))] namespace CustomRenderer.iOS { cla
Xamarin表单创建的iOS应用程序中增加滑块的大小。我尝试使用以下自定义呈现程序来覆盖布局子视图
。它增加了尺寸,但拇指的尺寸增加不可接受。如何在保持滑块高度增加的情况下减小拇指的大小
这在Android中是可能的,如下所示:
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;
}
}
}
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);
}
}
[程序集:导出渲染器(typeof(MySlider)、typeof(mysliderrender))]
命名空间CustomRenderer.iOS
{
类mysliderrender:Xamarin.Forms.Platform.iOS.sliderrender
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(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);
}
公共覆盖无效布局子视图()
{
base.LayoutSubviews();
CGAffineTransform transform=CGAffineTransform.MakeScale(1f,12.0f);
transform.TransformSize(this.Frame.Size);
this.Control.Transform=转换;
}
}
}
更新-引用-渲染器
[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;
}
}
}
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);
}
}
重写TrackRectForBounds
以更改其高度,而不是更改transform
在mysliderrender中
class MySliderRenderer : SliderRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
{
SetNativeControl(new MySlideriOS());
base.OnElementChanged(e);
}
}
我的测试
这里是覆盖TrackRectForBounds
以更改其高度,而不是更改变换
在mysliderrender中
class MySliderRenderer : SliderRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
{
SetNativeControl(new MySlideriOS());
base.OnElementChanged(e);
}
}
我的测试
这里是进行此更改后,滑块未渲染。我正在Mac上测试它。你能告诉我你是怎么测试的吗?另外,你有这个项目的工作示例吗?@Lijo好的,给我一些时间准备,我会在8小时内提供链接。@Lijo你是使用vs for mac还是windows?我正在windows中使用vs运行该项目。它使用Xamarin mac Agent连接到mac。我正在Mac中验证结果。@Lijo OK得到了。做了这个更改后,滑块没有渲染。我正在Mac上测试它。你能告诉我你是怎么测试的吗?另外,你有这个项目的工作示例吗?@Lijo好的,给我一些时间准备,我会在8小时内提供链接。@Lijo你是使用vs for mac还是windows?我正在windows中使用vs运行该项目。它使用Xamarin mac Agent连接到mac。我正在Mac中验证结果。@Lijo OK收到了。