【问题标题】:How to style a UISegmentedControll?如何设置分段控件的样式?
【发布时间】:2012-12-06 13:16:18
【问题描述】:

我正在使用 Rubymotion 创建一个 iOS 应用程序。 在其中一个视图中,我使用的是 UIsegmentedcontroller,它工作正常。

如何自定义它。我需要为整个背景使用自定义背景图像(这不起作用)和每个按钮的图像(这有效)。

这是我当前的代码:

options = ["Selected","Unselected"]
    segment = UISegmentedControl.alloc.initWithItems(options)
    segment.addTarget(self, action: :'open:', forControlEvents:UIControlEventValueChanged)
    segment.frame = [[0, 0],[320, 40]]
    segment.segmentedControlStyle = 7
    segment.selectedSegmentIndex = 0
    segment.setImage(button, forSegmentAtIndex:0)
    segment.setImage(button2, forSegmentAtIndex:1)

我用这段代码试过了:

segment.apperance.setBackgroundImage(button, forState:UIControlStateNormal , forBarMetrics:UIBarMetricsDefault)

segment.setBackgroundImage(button, forState:UIControlStateSelected , forBarMetrics:UIBarMetricsDefault)

但如果我这样做了,我会收到此错误:

undefined method `appearance' for #<UISegmentedControl:0x9655a90> (NoMethodError)

我也试过不显示,但后来我得到了:

undefined method `setBackgroundImage' for #<UISegmentedControl:0x946db70> (NoMethodError)

更新

我试过了,背景上没有显示图像:

segment.setBackgroundImage(background, forState:UIControlStateNormal, barMetrics:UIBarMetricsDefault)

【问题讨论】:

    标签: objective-c rubymotion


    【解决方案1】:

    使用setBackgroundImage:forState:barMetrics:

    它为给定的状态和条形指标设置背景图像。

    可以在Apple.Developer documentation查看详情

    示例代码:

    取自here

    [[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [[UISegmentedControl appearance] setDividerImage:segUnselectedSelected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
    
    [[UISegmentedControl appearance] setBackgroundImage:segmentUnselected forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [[UISegmentedControl appearance] setBackgroundImage:segmentSelected forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
    

    【讨论】:

    • 谢谢!我试过这个(见更新的问题),但图像没有显示在背景上。有没有办法去除按钮周围的边框?
    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2021-12-23
    相关资源
    最近更新 更多