为UISegmentedControl设置外观会中断禁用状态

时间:2012-11-27 18:41:29

标签: objective-c

我在全局设置所有UISegmentedControl的外观。但是我注意到,当我这样做时,它会打破禁用状态。

以下是我必须更改titleTextAttributes

的代码
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIFont boldSystemFontOfSize:12], UITextAttributeFont,
                                [UIColor whiteColor], UITextAttributeTextColor,
                                [UIColor colorWithRed:0x49/255.0 green:0x49/255.0 blue:0x49/255.0 alpha:1], UITextAttributeTextShadowColor,
                                [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset,
                                nil];
[[UISegmentedControl appearance] setTitleTextAttributes:attributes forState:UIControlStateNormal];

现在这很好用,所有分段控制器都会更新。

但是我使用setEnabled:forSegmentAtIndex:禁用的项目不再被禁用且可以点击。为什么会这样?如何让他们再次被禁用。我试图将它应用于禁用状态,但它不起作用。

[[UISegmentedControl appearance] setTitleTextAttributes:attributes forState:UIControlStateDisabled];

1 个答案:

答案 0 :(得分:0)

看来,为UISegmentedControl设置全局外观并不是最好的方法,因为它不尊重UIControlStateDisabled。

我认为我必须使用UIControlStateDisabled,因为没有任何工作,但似乎直接设置背景有效。所以我最后制作了一个初始化背景的UISegmentedControlExtended类,现在setEnabled函数正常工作。