【发布时间】:2013-11-22 13:47:01
【问题描述】:
我想用图像实现一个 SegmentedControl Bar,所以,我用 UIImages 创建了一个数组,然后我添加到分段控件中:
UIImage *img1 = [UIImage imageNamed:@"btn-checkin.png"];
UIImage *img2 = [UIImage imageNamed:@"btn-checkin.png"];
UIImage *img3 = [UIImage imageNamed:@"btn-fav-selected.png"];
UIImage *img4 = [UIImage imageNamed:@"btn-fav.png"];
NSArray *itemsArray = [NSArray arrayWithObjects:img1,img2,img3,img4,nil];
segmentedControlBar = [[WPCustomSegmentedBar alloc] initWithItems:itemsArray];
segmentedControlBar.frame = toolBarFrame;
我将此添加到ViewController 的self.view,但我在分段控件中看不到图像..
这是我看到的:
蓝色方块而不是图片..
图片的路径没问题。
这是我的自定义实现..
@implementation WPCustomSegmentedBar
- (id)initWithItems:(NSArray *)items
{
self = [super initWithItems:items];
if (self) {
self.segmentedControlStyle = UISegmentedControlStyleBar;
self.selectedSegmentIndex = UISegmentedControlNoSegment;
[self addTarget:self action:@selector(valueChanged:) forControlEvents: UIControlEventValueChanged];
}
return self;
}
- (void)valueChanged:(UISegmentedControl *)segment {
[self disableButtonImage];
if(segment.selectedSegmentIndex == 0) {
[self setImage:[UIImage imageNamed:@"btn-checkin-selected.png"] forSegmentAtIndex:segment.selectedSegmentIndex];
}else if(segment.selectedSegmentIndex == 1){
[self setImage:[UIImage imageNamed:@"btn-info-selected.png"] forSegmentAtIndex:segment.selectedSegmentIndex];
}else if(segment.selectedSegmentIndex == 2){
[self setImage:[UIImage imageNamed:@"btn-comment-selected.png"] forSegmentAtIndex:segment.selectedSegmentIndex];
}else if(segment.selectedSegmentIndex == 3){
[self setImage:[UIImage imageNamed:@"btn-fav-selected.png"] forSegmentAtIndex:segment.selectedSegmentIndex];
}
self.activeButtonIndex = segment.selectedSegmentIndex;
}
-(void) disableButtonImage
{
if(activeButtonIndex == 0) {
NSLog(@"active button 0");
[self setImage:[UIImage imageNamed:@"btn-checkin.png"] forSegmentAtIndex:activeButtonIndex];
}else if(activeButtonIndex == 1){
NSLog(@"active button 1");
[self setImage:[UIImage imageNamed:@"btn-info.png"] forSegmentAtIndex:activeButtonIndex];
}else if(activeButtonIndex== 2){
NSLog(@"active button 2");
[self setImage:[UIImage imageNamed:@"btn-comment.png"] forSegmentAtIndex:activeButtonIndex];
}else if(activeButtonIndex == 3){
NSLog(@"active button 3");
[self setImage:[UIImage imageNamed:@"btn-fav.png"] forSegmentAtIndex:activeButtonIndex];
}
}
和.h
#import <UIKit/UIKit.h>
@interface WPCustomSegmentedBar : UISegmentedControl
@property (nonatomic)NSInteger activeButtonIndex;
@end
【问题讨论】:
-
同时显示 .h 文件
-
Edited.. activeButtonIndex 是我用来知道哪个是活动按钮并更改所选图像的属性..
标签: ios iphone objective-c uiimage uisegmentedcontrol