使用自定義UISlider控制View亮度

2022-04-03 00:23:29 字數 1222 閱讀 8026

上一次分享了自定義slider

其實當時在專案中這個slider是用來設定螢幕的亮度,拖動的時候也有預覽,如圖:

我們來說說螢幕亮度的實現原理吧,可以呼叫私有api來調節螢幕亮度,但蘋果官方審核未必能通得過。所以我的做法原理是:

1、放置乙個view蓋住整個螢幕(可以在ib裡拖好也可以使用**實現)

2、設定遮擋view的user interaction enabled的屬性為no,這樣使用者點選到這個view就不會有任何互動,我個人理解是這個view既蓋住了其他的控制項,又不會影響其他控制項的點選等互動。

3、設定遮擋view的背景色為黑,alpha為1.0就是最黑,0就是透明,這樣,值越小亮度就越大,值越大亮度就越小。

但是,還是很憒憾,這不是真正的調整了亮度,最亮的亮度還是取決於你自己的iphone本身的亮度設定。但是聊勝於無,下面,我們來講講實現吧!

我使用的是uiimageview哦,至於其他的view,大家都可以自己實驗一下。

首先:在ib中拖乙個uiimageview出來,隨便放**,最好不影響設計,大小也無所謂,因為一會兒在**中把它佔滿整個螢幕,uiimageview預設的user interaction enabled屬性是為no的,所以不用改:

然後,設定背景色為黑的,在標頭檔案中宣告iboutlet,ib中關聯後,現在可以開始寫**了:

在viewdidload方法中,把uiimageview的寬高佔滿整個view:

[imagecover setframe:cgrectmake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
上一次說到自定義slider的 時候,已說過slider的uicontroleventvaluechanged是正在拖動時觸發的事件,而 uicontroleventtouchupinside是拖動完畢時觸發的,所以拖動時的預覽可以寫在valuechanged中,而如果要記錄亮度值 到資料庫之類的就寫在touchupinside事件中,valuechanged**:

-(ibaction)slidervaluechanged:(id)sender

自定義UISlider的樣式和滑塊

又做完乙個專案,遂到了寫帖時間了,要跟大家分享的是 自定義uislider的和滑塊,先看一下效果 然後是實現了,我們使用的是uislider的setminimumtrackimage,和setmaximumtrackimage方法來定義 的,這兩個方法可以設定滑塊左邊和右邊的的,不過如果用的是同一張...

自定義UISlider的樣式和滑塊

又做完乙個專案,遂到了寫帖時間了,要跟大家分享的是 自定義uislider的和滑塊,先看一下效果 然後是實現了,我們使用的是uislider的setminimumtrackimage,和setmaximumtrackimage方法來定義 的,這兩個方法可以設定滑塊左邊和右邊的的,不過如果用的是同一張...

自定義UISlider的樣式和滑塊

又做完乙個專案,遂到了寫帖時間了,要跟大家分享的是 自定義uislider的和滑塊,先看一下效果 然後是實現了,我們使用的是uislider的setminimumtrackimage,和setmaximumtrackimage方法來定義 的,這兩個方法可以設定滑塊左邊和右邊的的,不過如果用的是同一張...