使用UISlider實現指定範圍選擇
創建一個滑動條並且把它放在試圖控制器的視圖中。
@interface SliderView:UIViewController
@property(non atomic,strong)UISlider *mySlider;
@end
@synthesize mySlider;
-(void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.mySlider = [ [UISlider alloc] initWithFrame:CGRectMake(0.0f,0.0f,200.0f,23.0f)];
self.mySlider.center = self.view.center;
self.mySlider.minimumValue = 0.0f;//選擇範圍的最小值
self.mySlider.maximumValue= 100.0f;//選擇範圍的最大值
self.mySlider.value = self.mySlider.maximumValue / 2.0;//當前值
self.mySlider.continuous = NO;//默認YES,若爲YES,thumb滑動時會連續調用slider d target。
[self.mySlider addTarget:self action:@selecter(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubView:self.mySlider];
}
slider上的小滑塊叫做thumb;
target
-(void)sliderValueChanged:(UISlider *)paramSender{
if([paramSender isEqual:self.mySlider]){
NSLog(@"%@",paramSender.value);
}
}
slider 的 thumb 圖片選中設置
setThumbImage:forState:方法
UIControlStateNormal //正常狀態下的thumb ,即沒有點擊的。
UIControlStateHighlighted //選中狀態的thumb,即用戶點擊thumb時顯示的圖片
[self.mySlider setThumbImage:[UIImage imaged:@"ThumbNormal.png"] forState:UIControlStateNormal];
[self.mySlider setThumbImage:[UIImage imaged:@"ThumbHighlighted.png"] forState:UIControlStateHighlighted];
UISegmentedControl 做簡單選項分組
@interface SegmentedControl :UIViewController
@property(non atomic,strong)UISegmentedControl *mySegmentedControl;
@end;
@synthesize mySegmentedControl;
-(void)viewDidLoad{
[super viewDidLoad];
self.view.backgrounderColor = [UIColor whiteColor];
NSArray *segments = [[NSArray alloc] initWithObjects:@"iPhone",@"iPad",nil];
self.mySegmentedControl = [[UISegmentedControl alloc]initWithItems:segments];
self.mySegmentedControl.center = self.view.center;
[self.view addSubview:self.mySegmentedControl];
}
通過一組string來初始化控件中要顯示的不同選項,還可以通過initWithObjects:initializer 方法來初始化控件,參數可以爲string還可以爲圖片。
怎麼知道選中哪一個了呢?答案很簡單,添加一個target
-(void)segmentChanged:(UISegmentedControl *)paramSender{
if([paramSender isEqual:self.mySegmentedControl]){
NSInteger selectedSegmentIndex = [paramSender selectedSegmentIndex];
NSString *selectedSegmentText = [paramSender titleForSegmentAtIndex:selectedSegmentIndex];
NSLog(@"Segment %ld with %@ text is selected",(long)selectedSegmentIndex,selectedSegmentText);
}
}
在viewDidLoad 裏面add後面加上這句:
[self.mySegmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];
運行程序你會得到以下結果(從左到右點擊)
Segment 0 with One text is selected
Segment 1 with Two text is selected
Segment 2 with Three text is selected
Segment 3 with Four text is selected
selectedSegmentIndex 方法找到當前選項中的索引
titleForSegmentAtIndex 方法得到對應文本
你可能注意到了,一旦用戶選中了一個選項,那個選項會一直保持着選中狀態,那麼怎麼才能選中之後該選項馬上變回原始狀態呢,有辦法請看:
self.mySegmentedControl.momentary = YES;
想在控件上面加載圖片可以這樣:
-(void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
NSArray *segments = [ [NSArray alloc]initWithObjects:@"One",@"Two",[UIImage imageNamed:@"Three.png"],@"Four",nil];
self.mySegmentedControl = [ [UISegmentedControl alloc]initWithItems:segments];
CGRectsegmentedFrame = self.mySegmentedControl.frame;
segmentedFrame.size.height = 64.0f;
segmentedFrame.size.width = 300.0f;
self.mySegmentedControl.frame = segmentedFrame;
self.mySegmentedControl.center = self.view.center;
[self.view addSubview:self.mySegmentedControl];
}
分段控件的空間風格:
typedef enum{
UISegmentedControlStylePlain,
UISegmentedControlStyleBordered,
UISegmentedControlStyleBar,
UISegmentedControlStyleBezeled ,//接近矩形
}UISegmentedControlStyle;