我有一个带有 2 个部分的自定义 UISegmentedControl,它以编程方式声明,所以我不能使用 IB。我设置了背景图像、色调和标题。我需要有一个与标题一致的图像显示。如果我设置图像,标题就会消失,反之亦然。
我需要一种在段上同时显示图像和标题的方法。有什么想法吗?
我有一个带有 2 个部分的自定义 UISegmentedControl,它以编程方式声明,所以我不能使用 IB。我设置了背景图像、色调和标题。我需要有一个与标题一致的图像显示。如果我设置图像,标题就会消失,反之亦然。
我需要一种在段上同时显示图像和标题的方法。有什么想法吗?
创建 UISegmentedControl 的子类,覆盖
[MySegmentedControl initWithItems:]
-(id) initWithItems:(NSArray*)items {
[self setImage:anImage forState:aState barMetrics:UIBarMetricsDefault];
[self setTitleTextAttributes:aDict forState:aState];
[self setDividerImage:anImage forLeftSegmentState:aState rightSegmentState:aState barMetrics:UIBarMetricsDefault];
... do more UI stuff ...
}
在您的视图控制器中,您可以使用以下命令调用它:
-(void)viewDidLoad {
[self.view addSubview:[MySegmentedControl alloc] initWithItems:@[@"one",@"two"]]];
...
在 iOS6/7 上可靠地为我工作。
假设 segmentedControl 在您的 .h 中
@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControl;
在您的 .m 中为您的 viewController 执行此操作并在代码中设置段
[self.segmentedControl insertSegmentWithTitle:@"Title with Image" atIndex:0 animated:YES];
[self.segmentedControl setImage:[UIImage imageNamed:@"whatever.png"] forSegmentAtIndex:0];