iOS-小的Demo(Swift基礎練習)--自定義進度條

零落成泥碾作塵,唯有香如故!<藍蟾蜍>

忙里偷閑練習一下 Swift
效果圖:

自定義 barbutton.gif

效果分析: 其實這個效果就是就是類似一個 UISlider只是自定義了滑塊,使用的是 UIProgress 進度條, 點擊進度條的上點, 滑塊自動滑到對應的點! 這里的滑塊可以換成其他的控件.
思路: 我的思路就是在 UIProgress 進度條上添加一個 UIView 作為滑塊, 然后進度上加點擊手勢根據(jù)點擊的位置去調整進度條的進度值, 以及改變滑塊的位置!

代碼部分:

# 這個代理協(xié)議是為了在進度條改變的時候  讓其代理執(zhí)行方法  例如音頻根據(jù)改變的進度去  相應的調整到對應的位置播放
protocol DDProgressViewDelegate
{
    func ddProgressView(ddProgressView: DDProgressView, changeProgress currenProgress:Float)
    
}

class DDProgressView: UIProgressView {
    
    // 進度條上的滑塊
    let sliderView: UIView = UIView.init()
    // 代理
     var delegate:DDProgressViewDelegate?
    
# 代碼初始化方法
    override init(frame: CGRect) {
        super.init(frame: frame)
        // 設置一下  滑塊的大小 位置 顏色 等屬性
        sliderView.backgroundColor = UIColor.redColor()
        sliderView.bounds = CGRectMake(0, 0, 5, 5)
        // 讓小滑塊的中心點 在進度的端點位置
        sliderView.center = CGPointMake( CGFloat(self.progress) * self.bounds.size.width, self.bounds.size.height / 2);
        self.addSubview(sliderView)
        
        // 給滑條加一個手勢 目的是為了點擊滑條  進度端點就變成點擊點位置
        self.userInteractionEnabled = true; // 開交互
        let tap: UITapGestureRecognizer = UITapGestureRecognizer.init(target: self, action: "tapAction:")
        self.addGestureRecognizer(tap)
    }
# 可視化編程 初始化  
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
 // 設置一下  滑塊的大小 位置 顏色 等屬性
        sliderView.backgroundColor = UIColor.redColor()
        sliderView.bounds = CGRectMake(0, 0, 5, 5)
        sliderView.center = CGPointMake( CGFloat(self.progress) * self.bounds.size.width, self.bounds.size.height / 2);
        self.addSubview(sliderView)
        
 // 給滑條加一個手勢 目的是為了點擊滑條  進度端點就變成點擊點位置
        self.userInteractionEnabled = true; // 開交互
        let tap: UITapGestureRecognizer = UITapGestureRecognizer.init(target: self, action: "tapAction:")
        self.addGestureRecognizer(tap)
        
       
    }
  
// 點擊進度條后執(zhí)行的  手勢事件
    func tapAction(tap : UITapGestureRecognizer)
    {
    let touchPoint: CGPoint = tap.locationInView(self)
    
// 設置進度條的進度  當前點擊的點前面的長度  占整個寬度的百分比  就是當前的進度
    self.setProgress(Float(touchPoint.x / self.bounds.size.width) , animated: true)
    
// 進度條改變了 出發(fā)代理執(zhí)行代理事件  讓用的地方可以相應的改變  比如音頻視頻的播放進度調整
        self.delegate?.ddProgressView(self, changeProgress: self.progress)
    }
    
    
// 重新把 子控件的滑塊  布局到端點位置
    override  func layoutSubviews()
    {
        super.layoutSubviews()
// 讓小滑塊的中心點 在進度的端點位置
        sliderView.center = CGPointMake( CGFloat(self.progress) * self.bounds.size.width, self.bounds.size.height / 2);
    }
    
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 系列:iOS 開發(fā)-基礎控件 之前講了一大堆數(shù)據(jù)類型,當然我只是調了幾個說說,仍然不是全部,不如時間類型NSDat...
    spicyShrimp閱讀 2,809評論 1 5
  • 森林 晨露 晶瑩剔透的光 葉 蟲鳴 多彩綻放的花 你 我 此刻 即是全世界
    青風心理閱讀 280評論 0 1
  • 我在網(wǎng)上搜“人不可貌相”,點擊圖片,第一個出來的居然是馬云的照片。 我是一個以貌取人的人,頗有些自戀,大概頭腦深處...
    妙語如珠閱讀 336評論 0 0
  • 做好做細每一件事情,這是對于九月份的一個反思。 九月份一轉眼就過去了,我觀察到自己和一部分學生似乎還沒有進入學習的...
    稼軒李德智閱讀 358評論 1 1

友情鏈接更多精彩內容