3

UIApperance用来在我的 中设置背景图像UISegmentedControl,如下所示:

[[UISegmentedControl appearance] setBackgroundImage:normalBackgroundImage
                                           forState:UIControlStateNormal 
                                         barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setBackgroundImage:selectedBackgroundImage 
                                           forState:UIControlStateSelected 
                                         barMetrics:UIBarMetricsDefault];

但是,我的图像高于标准UISegmentedControl尺寸。所以稍后,我试图获取控件的背景图像,以便调整控件的大小,如下所示:

UIImage *imageForHeight = [self.segmentedControl 
                                backgroundImageForState:UIControlStateNormal 
                                             barMetrics:UIBarMetricsDefault];

这个方法调用返回nil,我无法弄清楚为什么。该控件实际上是使用我放入的图像UIAppearance。有谁知道为什么这种方法不返回我的图像,或者以不同的方式将背景图像从分段控件中取出?

4

1 回答 1

0

您在外观代理上设置图像,但试图从实例中获取它。尝试在实例本身上设置图像,它应该可以工作。

如果您需要使用代理(比如超过 1 个控件),我建议您事先计算图像大小并调整框架。

于 2012-12-01T05:04:31.130 回答