2

我有一个带有 2 个部分的自定义 UISegmentedControl,它以编程方式声明,所以我不能使用 IB。我设置了背景图像、色调和标题。我需要有一个与标题一致的图像显示。如果我设置图像,标题就会消失,反之亦然。

我需要一种在段上同时显示图像和标题的方法。有什么想法吗?

4

2 回答 2

0

创建 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 上可靠地为我工作。

于 2013-12-16T14:40:13.977 回答
-2

假设 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];
于 2013-01-11T01:27:32.767 回答