一巡扇、初始化一個Slider
UISlider *slider = [[UISlider alloc]initWithFrame:CGRectMake(0, 400,320 , 20)];
滑塊是一個標(biāo)準(zhǔn)的UIControl。我們可以通過代碼創(chuàng)建,如同開關(guān)(UISwitch)的寬與高都會被忽略一樣滑塊的高也會被忽略(但是寬度不會):
二是晨、設(shè)定范圍與默認(rèn)值
創(chuàng)建完畢的同時我們要設(shè)置好滑塊的范圍切诀,如果你沒有設(shè)置养距,那么會使用默認(rèn)的 0.0 到 1.0 之間的值蝗砾。UISlider提供了兩個屬性來設(shè)置范圍:mininumValue 和 maxinumValue:
mySlider.mininumValue=0.0;//下限
mySlider.maxinumValue=50.0;//上限
同時你也可以為滑塊設(shè)定一個默認(rèn)值:
mySlider.value=22.0;
三、改變****UISlider****的外觀
slider.minimumValueImage = [UIImage imageNamed:@"設(shè)置slider左邊的圖片"];
slider.maximumValueImage = [UIImage imageNamed:@"設(shè)置slider右邊的圖片"];
//設(shè)置了會減小滾動區(qū)域的寬度掏击,但整個slider的寬度不變
[slider setMinimumTrackImage:[UIImage imageNamed:@"設(shè)置滑輪左邊的圖片卵皂,最好寬度和slider一樣"] forState:UIControlStateNormal];
[slider currentMinimumTrackImage];//得到當(dāng)前滑輪左邊的圖片如果有的話
[slider setMaximumTrackImage:[UIImage imageNamed:@"設(shè)置滑輪左邊的圖片,最好寬度和slider一樣"] forState:UIControlStateNormal];
[slider currentMaximumTrackImage];//得到當(dāng)前滑輪右邊的圖片如果有的話
把藍(lán)色的設(shè)置為MinimumTrackImage
把灰色的設(shè)置為MaximumTrackImage
可以加一個label用于顯示value砚亭,在UISlider的行為的change方法里改變label.text屬性
slider.minimumTrackTintColor = [UIColor redColor];//滑輪左邊顏色如果設(shè)置了左邊的圖片就不會顯示
slider.maximumTrackTintColor = [UIColor redColor];//滑輪右邊顏色如果設(shè)置了右邊的圖片就不會顯示
[slider thumbImageForState:UIControlStateNormal];
[slider setThumbImage:[UIImage imageNamed:@"設(shè)置滑輪樣子的圖片"] forState:UIControlStateHighlighted];//設(shè)置了普通狀態(tài)和高亮狀態(tài)的滑輪樣式
slider.thumbTintColor = [UIColor redColor];//設(shè)置了滑輪的顏色如果設(shè)置了滑輪的樣式圖片就不會顯示
你可以根據(jù)滑塊的各種不同狀態(tài)顯示不同的圖像灯变。下面是可用狀態(tài):
UIControlStateNormal
UIControlStateHighlighted
UIControlStateDisabled
UIControlStateDisabled
UIControlStateSelected
四殴玛、顯示控件
[parentViewaddSubview:myslider];//添加到父視圖
或
[self.navigationItem.titleViewaddSubview:myslider];//添加到導(dǎo)航欄
五、讀取控件值
floatvalue=mySlider.value;
六添祸、通知
要想在滑塊值改變時收到通知滚粟,可以用UIControl類的addTarget方法為UIControlEventValueChanged事件添加一個動作。
[mySlideraddTarget:selfaction:@selector(sliderValueChanged:)forControlEventValueChanged];
只要滑塊停放(注意是停放膝捞,如果要在拖動中也觸發(fā)坦刀,請看后文)到新的位置,你的動作方法就會被調(diào)用:
-(void)sliderValueChanged:(id)sender{
UISlidercontrol=(UISlider)sender;
if(control==mySlider){
floatvalue=control.value;
}
}
如果要在拖動中也觸發(fā)蔬咬,需要設(shè)置滑塊的 continuos 屬性:
mySlider.continuous=YES;
這個通知最簡單的一個實(shí)例就是實(shí)時顯示滑塊的值,很奇怪的蘋果顯示滑塊的值是一個私有的API(setShowValue)沐寺,私有就私有林艘,大不了我不用就是。我們可以用一個UILabel來顯示值混坞,在每次觸發(fā)上面的方法時改變label的值狐援,不就可以實(shí)時顯示了嗎?當(dāng)然我們可以做的不僅僅是這個究孕,還有更多的 cool 事情可以去實(shí)現(xiàn)啥酱,就看你的手段與想象力了。
主要是UISlider跟換thumb 與 狀態(tài)條 bar 的替換
// 讓Slider控件旋轉(zhuǎn)90度 垂直
CGAffineTransformrotation =CGAffineTransformMakeRotation(-1.57079633);
self.volumeSlider.transform= rotation;
//跟換Thumb
[self.volumeSlidersetThumbImage:image1forState:UIControlStateNormal];
// 跟換bar并且實(shí)現(xiàn)拖動效果
//覆蓋的圖片
[self.volumeSlidersetMinimumTrackImage:image2forState:UIControlStateNormal];
//底片
[self.volumeSlidersetMaximumTrackImage:imageforState:UIControlStateNormal];
轉(zhuǎn)載地址 http://blog.sina.com.cn/s/blog_a7c44c880101c83r.html