UISlider 增加了滑块大小,但在 iOS 应用程序中没有拇指变形 [英] UISlider with increased slider size but no thumb distortion in iOS App
问题描述
我需要在使用 Xamarin Forms
创建的 iOS 应用
中增加滑块的大小.我尝试使用以下自定义渲染器覆盖 LayoutSubviews
.它增加了尺寸,但拇指的尺寸增加了不可接受的.如何在保持滑块高度增加的情况下减小拇指的大小?
Android 中是可能的,如下所示:
更新 - 参考 - 渲染器
这是示例
I need to increase size of slider in the
iOS app
created usingXamarin Forms
. I tried with following custom renderer that overridesLayoutSubviews
. It increases the size but there is an unacceptable size increase for the thumb. How to reduce the size of the thumb keeping the increased height of the slider?It is possible in Android as shown here: Increase height of slider without affecting thumb in Android App
iOS References:
C# Custom Renderer
[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; } } }
UPDATE - REFERENCES - Renderer
解决方案Override
TrackRectForBounds
to change its height instead of changingtransform
.In MySliderRenderer
class MySliderRenderer : SliderRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Slider> e) { SetNativeControl(new MySlideriOS()); base.OnElementChanged(e); } }
Create a subclass of 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); } }
My test
Here is Sample
这篇关于UISlider 增加了滑块大小,但在 iOS 应用程序中没有拇指变形的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!