加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在iOS上有刻度线的Horizantal滑块

发布时间:2020-12-14 17:38:47 所属栏目:百科 来源:网络整理
导读:我可以在iOS上实现带刻度标记的水平滑块吗?在MacOS中没有这样的选项. 解决方法 我实际上在我公司的网站上写了一个如何做到这一点的教程: http://fragmentlabs.com/blog/making-talking2trees-part-3-77 对此的快速回答是我编写的自定义方法,并在上面的文章
我可以在iOS上实现带刻度标记的水平滑块吗?在MacOS中没有这样的选项.

解决方法

我实际上在我公司的网站上写了一个如何做到这一点的教程:

http://fragmentlabs.com/blog/making-talking2trees-part-3-77

对此的快速回答是我编写的自定义方法,并在上面的文章中进行了解释:

-(UIView*)tickMarksViewForSlider:(UISlider*)slider View:(UIView *)view
{
// set up vars
int ticksDivider = (slider.maximumValue > 10) ? 10 : 1;
int ticks = (int) slider.maximumValue / ticksDivider;
int sliderWidth = 364;
float offsetOffset = (ticks < 10) ? 1.7 : 1.1;
offsetOffset = (ticks > 10) ? 0 : offsetOffset;
float offset = sliderWidth / ticks - offsetOffset;
float xPos = 0;

// initialize view to return
view.frame = CGRectMake(view.frame.origin.x,view.frame.origin.y+1,slider.frame.size.width,slider.frame.size.height);
view.backgroundColor = [UIColor clearColor];

// make a UIImageView with tick for each tick in the slider
for (int i=0; i < ticks; i++)
{
    if (i == 0) {
        xPos += offset+5.25;
    }
    else
    {
        UIView *tick = [[UIView alloc] initWithFrame:CGRectMake(xPos,3,2,16)];
        tick.backgroundColor = [UIColor colorWithWhite:0.7 alpha:1];
        tick.layer.shadowColor = [[UIColor whiteColor] CGColor];
        tick.layer.shadowOffset = CGSizeMake(0.0f,1.0f);
        tick.layer.shadowOpacity = 1.0f;
        tick.layer.shadowRadius = 0.0f;
        [view insertSubview:tick belowSubview:slider];
        xPos += offset - 0.4;
    }
}

// return the view
return view;
}

您基本上将此方法应用于位于UISlider后面的视图,并以适当的间隔创建刻度线.您可以通过修改ticksDivider变量来更改可见的滴答数.上面的示例为每个滑块值创建一个,除非滑块的maximumValue属性大于10(我的滑块的值为5,40和120),在这种情况下,我将值除以10.

您必须使用offsetOffset值和xPos = offset之后的浮点值…来计算拇指图像和滑块上限的宽度(因此拇指按钮看起来在每个上方居中).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读