这就是我想要的效果:
这是我到目前为止所做的:
Cocoa不允许您为每个片段设置图标和文本,因此我被迫将文本刻录到图像中:
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[
[UIImage imageNamed:@"segmentedControlContacts"],
[UIImage imageNamed:@"segmentedControlOtherApps"]
]];
我必须完成的最后一件事是使正常(未选定)段灰色而不是其选定的/浅蓝色。以下不起作用:
// themeColor is defined as a shade of blue in a category
[UIView appearance].tintColor = [UIColor themeColor];
[[UISegmentedControl appearance]
setBackgroundImage:[UIImage imageNamed:@"segmentedControlEdgeNormal"]
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance]
setBackgroundImage:[UIImage imageNamed:@"segmentedControlEdgeSelected"]
forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance]
setTitleTextAttributes:@{
NSForegroundColorAttributeName: [UIColor grayColor]
}
forState:UIControlStateNormal
];
答案 0 :(得分:1)
该行
[[UISegmentedControl appearance] setTitleTextAttributes:@{
NSForegroundColorAttributeName: [UIColor grayColor]
}
forState:UIControlStateNormal
];
仅适用于分段控制的标题。如果你从段中删除图像并为这两个段添加标题,那肯定会有效。
这不会对分段控制的图像产生影响。
对于图像自定义,您必须使用方法:
- (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics
它也不会像你期望的那样显示色彩。
<强>建议:强>
如果您仍然坚持要做出自定义行为,我建议保留段控件而不是创建两个按钮并将它们并排放置,以感觉像一个段控件。
对于该行为,您需要灰色图像作为按钮背景并更改为备用按钮事件。