首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode / Xamarin OSX应用程序:带有自定义步骤的UISlider

Xcode / Xamarin OSX应用程序:带有自定义步骤的UISlider
EN

Stack Overflow用户
提问于 2017-09-26 11:43:28
回答 1查看 66关注 0票数 2

我正在构建一个Xamrain本地OSX应用程序。我需要建立一个UI滑翔机,文字输入和数字步进来表示快门速度。但由于快门的速度不是均匀的顺序,我看不出有什么方法可以做到。

我已经有了这个用于分贝和百分比的ui元素,其中这三个组件都绑定到一个模型中作为它们的值,这很好.

例如,这基本上有一个数值范围0-800,以及文本输入的数字格式化程序。

但是快门的速度是1/25,1/30,1/60,1/90,1/100等等。

不是均匀分布,也不是数值范围。我可以将它们转换为毫秒(这样1/25将是40),但是步骤仍然不均匀。

对于在本地OSX Xamarin应用程序中如何实现这一点,有什么想法吗?

你能用参差不齐的步伐做一个步进吗?

或者是否有方法将其映射到索引数组,并在更改时按索引从数组中获取对象以获得实际值?

我担心,随着数字的格式化和数据绑定,它将变得更加复杂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-27 02:42:13

下面是我在一个使用UISlider的原型中所做的工作(稍后我将它转换为一个自定义控件):

假设您有这两个数组:

代码语言:javascript
复制
float[] shutterSpeeds = new float[] { 1 / 1000f, 1 / 500f, 1 / 250f, 1 / 60f, 1 / 30f, 1 / 15f, 1 / 8f, 1 / 4f, 1 / 2f, 1f };
string[] shutterSpeedsLabel = new string[] { "1/1000", "1/500", "1/250", "1/60", "1/30", "1/15", "1/8", "1/4", "1/2", "1" };

UISlider设置:

代码语言:javascript
复制
uiSlider.Value = shutterSpeeds[0];
uiSlider.MinValue = shutterSpeeds[0];
uiSlider.MaxValue = shutterSpeeds[shutterSpeeds.Length - 1];
uiSlider.Continuous = true;
uiSlider.ValueChanged += (sender, e) =>
{
    uiLabel.Text = shutterSpeedsLabel[SnapTofStop(sender as UISlider).Index];
};
uiSlider.TouchUpInside += (sender, e) => 
{
    var slider = sender as UISlider;
    slider.Value = SnapTofStop(sender as UISlider).fStop;
};

SnapTofStop方法:

代码语言:javascript
复制
(float fStop, int Index) SnapTofStop(UISlider slider)
{
    var snapToValue = shutterSpeeds.Reverse().TakeWhile(_ => _.CompareTo(slider.Value) >= 0).Last();
    var snapToIndex = Array.FindIndex(shutterSpeeds, _ => _.CompareTo(snapToValue) == 0);
    return (snapToValue, snapToIndex);
}

注:这会对UISlider产生非线性影响,因为快门速度接近对数标度。可以将数组中的fStop条目数除以“向”范围,方法是对UISlider值应用对数曲线拟合例程来确定最接近的fStop,这样UISlider将向下一个fStop提供线性的“步骤”。

您可以对UIStepper执行同样的操作,并在一个正/negitive步骤上切换到一个fStop值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46425613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档