国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS中的UISlider滑塊組件用法總結

2019-10-21 18:54:03
字體:
來源:轉載
供稿:網友
不僅是滑動開關,UISlider組件也是常用的進度條制作工具,這里我們就一起來看一下iOS中的UISlider滑塊組件用法總結,需要的朋友可以參考下
 

PC上的滑塊是很丑陋的,因為我們只能通過鼠標去拖動他。不過當Jobs把它移植到IOS上時一切變得酷起來,因為我們可以通過手指去拖動它,這種感覺是很妙的。
滑塊為用戶提供了一種可見的做范圍調整的方法,用戶可以通過拖動一個滑動條改變它的值,并且可以對其配置以合適不同值域。你可以設置滑塊值的范圍,也可以在兩端加上圖片,以及進行各種調整讓它更美觀。滑塊非常適合用于表示在很大范圍(但不精確)的數值中進行選擇,比如音量設置、靈敏度控制等諸如此類的用途。
一、創建
滑塊是一個標準的UIControl。我們可以通過代碼創建,如同開關(UISwitch)的寬與高都會被忽略一樣滑塊的高也會被忽略(但是寬度不會):

復制代碼代碼如下:

UISlider* mySlider = [ [ UISlider alloc ] initWithFrame:CGRectMake(20.0,10.0,200.0,0.0) ];//高度設為0就好    

二、設定范圍與默認值
創建完畢的同時我們要設置好滑塊的范圍,如果你沒有設置,那么會使用默認的 0.0 到 1.0 之間的值。UISlider提供了兩個屬性來設置范圍:mininumValue 和 maxinumValue:
復制代碼代碼如下:

mySlider.mininumValue = 0.0;//下限  
mySlider.maxinumValue = 50.0;//上限  

同時你也可以為滑塊設定一個默認值:
復制代碼代碼如下:

mySlider.value = 22.0;  

三、兩端添加圖片
滑塊可以在任何一段顯示圖像。添加圖像后會導致滑動條縮短,所以記得要記得在創建的時候增加滑塊的寬度來適應圖像。
復制代碼代碼如下:

[ mySlider setMininumTrackImage: [ UIImage applicationImageNamed:@"min.png" ] forState: UIControlStateNormal ];  
[ mySlider setMaxinumTrackImage: [ UIImage applicationImageNamed:@"max.png" ] forState: UIControlStateNormal ];  

你可以根據滑塊的各種不同狀態顯示不同的圖像。下面是可用狀態:
復制代碼代碼如下:

UIControlStateNormal
UIControlStateHighlighted
UIControlStateDisabled
UIControlStateDisabled
UIControlStateSelected

四、顯示控件
復制代碼代碼如下:

[ parentView addSubview:myslider ];//添加到父視圖  

或  
復制代碼代碼如下:

[ self.navigationItem.titleView addSubview:myslider ];//添加到導航欄 

五、讀取控件值
復制代碼代碼如下:

float value = mySlider.value;  

六、通知
要想在滑塊值改變時收到通知,可以用UIControl類的addTarget方法為UIControlEventValueChanged事件添加一個動作。
復制代碼代碼如下:

[ mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEventValueChanged ];  

 只要滑塊停放(注意是停放,如果要在拖動中也觸發,請看后文)到新的位置,你的動作方法就會被調用:
復制代碼代碼如下:

- (void) sliderValueChanged:(id)sender{  
        UISlider* control = (UISlider*)sender;  
        if(control == mySlider){  
                  float value = control.value;  
                   /* 添加自己的處理代碼 */  
         }  
}  

如果要在拖動中也觸發,需要設置滑塊的 continuos 屬性:
復制代碼代碼如下:

mySlider.continuous = YES ;  

這個通知最簡單的一個實例就是實時顯示滑塊的值,很奇怪的蘋果顯示滑塊的值是一個私有的API(setShowValue),私有就私有,大不了我不用就是。我們可以用一個UILabel來顯示值,在每次觸發上面的方法時改變label的值,不就可以實時顯示了嗎?當然我們可以做的不僅僅是這個,還有更多的 cool 事情可以去實現,就看你的手段與想象力了。

 

七、UISlider兩邊有空隙的解決方法
之前做過一個播放器,音量條兩邊有空隙。在去新浪面試的時候,面試官提到了這個知識點。我在stackoverflow上爬了好久終于找到了方法,分享給iOS初學者。
重寫UISlider的這個方法

復制代碼代碼如下:

- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value
{
    rect.origin.x = rect.origin.x - 10 ;
    rect.size.width = rect.size.width +20;
    return CGRectInset ([super thumbRectForBounds:bounds trackRect:rect value:value], 10 , 10);
}

當然UISlider還有這么幾個方法可以重寫
復制代碼代碼如下:

-(CGRect)trackRectForBounds:(CGRect)bounds
{
    bounds.origin.x=15;
    bounds.origin.y=bounds.size.height/3;
    bounds.size.height=bounds.size.height/5;
    bounds.size.width=bounds.size.width-30;
    return bounds;
}
- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds;
- (CGRect)maximumValueImageRectForBounds:(CGRect)bounds;


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修水县| 达日县| 广饶县| 无为县| 清苑县| 乌兰察布市| 祁门县| 沂源县| 北流市| 河南省| 加查县| 平舆县| 高安市| 涟水县| 吉木萨尔县| 奉贤区| 民勤县| 庆元县| 吉木萨尔县| 屏山县| 达尔| 广丰县| 盐池县| 晋中市| 姜堰市| 鹿泉市| 白山市| 抚远县| 迁安市| 米易县| 祁东县| 郧西县| 宁阳县| 珠海市| 闻喜县| 岢岚县| 普安县| 英德市| 金乡县| 万安县| 苏尼特右旗|