2018-08-06 swift 自定義hud
專案中用到的圖片也可以使用程式碼畫出來。
使用方法
show: YTCustomeHudView.showHudWithText(ShowHudType.loading,"loading...")
dismiss: YTCustomeHudView.dismissHud()
importFoundation
class YTCustomeHudView :NSObject{
privatestaticfunccreateLayer() ->CAShapeLayer{
letpath :UIBezierPath=UIBezierPath(arcCenter:CGPoint(x: 25, y: 25), radius: 17, startAngle: .pi*0.5, endAngle:.pi*0.25, clockwise:false)
let layer : CAShapeLayer =CAShapeLayer()
layer.path= path.cgPath
layer.lineWidth= 2.5
layer.fillColor = UIColor.clear.cgColor
layer.strokeColor = Construction.instance.hex(0x26ABFB).cgColor
returnlayer
}
privatestaticfunccreateAnimation() ->CABasicAnimation{
letanimation =CABasicAnimation(keyPath:"transform.rotation.z")
animation.duration= 1.5
animation.repeatCount=HUGE
animation.autoreverses=false
animation.toValue=Double.pi*2
returnanimation
}
class func showHudWithText(type:ShowHudType,msg:String){
letbgView =UIView()
bgView.backgroundColor = UIColor.clear
bgView.tag= 999
bgView.frame = UIScreen.main.bounds
UIApplication.shared.keyWindow?.addSubview(bgView)
lethudView =UIView()
hudView.backgroundColor = UIColor.black.withAlphaComponent(0.4)
hudView.frame=CGRect(x: 0, y: 0, width: 120, height: 140)
hudView.center = CGPoint(x: YTConstants.ScreenWidth/2, y: YTConstants.ScreenHeight/2)
hudView.layer.cornerRadius= 2
hudView.layer.masksToBounds=true
bgView.addSubview(hudView)
leticonImgView :UIImageView= UIImageView(frame:CGRect(x: 35, y: 30, width: 50, height: 50))
iconImgView.image= ShowHudType.getHudView(type)()
hudView.addSubview(iconImgView)
lettitleLabel =UILabel(frame:CGRect(x: 10, y: iconImgView.frame.origin.y+iconImgView.frame.size.height+16, width: 100, height: 24))
titleLabel.font=UIFont.systemFont(ofSize: 16)
titleLabel.textColor=UIColor.white
titleLabel.textAlignment= .center
titleLabel.numberOfLines= 0
titleLabel.text= msg
hudView.addSubview(titleLabel)
iftype ==ShowHudType.loading{
iconImgView.layer.insertSublayer(createLayer(), at: 0)
iconImgView.layer.add(createAnimation(), forKey:"rotateAnimation")
}else{
DispatchQueue.main.asyncAfter(deadline: .now()+1.5, execute: {
self.dismissHud()
})
}
hudView.alpha= 0
UIView.animate(withDuration: 0.5, animations: {
hudView.alpha= 1
})
}
class func dismissHud(){
let view = UIApplication.shared.keyWindow?.viewWithTag(999) as UIView?
UIView.animate(withDuration: 0.3, animations: {
view?.alpha= 0
}, completion: { flagin
view?.removeFromSuperview()
})
}
}
enumShowHudType{
caseinfo
casesuccess
caseerror
caseloading
public funcgetHudView()->UIImage{
switchself{
case.info:
returnUIImage(named:"hud_info")!
case.success:
returnUIImage(named:"hud_success")!
case.error:
returnUIImage(named:"hud_error")!
case.loading:
returnUIImage(named:"hud_loading")!
}
}
}
相關文章
- Swift 自定義運算子Swift
- Swift 造輪子之自制 HUDSwift
- Swift中自定義運算子Swift
- swift4.0 自定義LOGSwift
- Swift 自定義 UIDatePickerSwiftUI
- 自定義Swift版SegmentControlSwift
- Swift - 自定義Share分享頁面Swift
- 自定義身份證鍵盤(Swift)Swift
- Swift自定義表情鍵盤+錄音Swift
- swift 自定義正規表示式運算子 =~Swift
- 自定義TabBar動畫效果 - 頁面轉場(Swift)tabBar動畫Swift
- iOS Swift和OC專案中自定義LogiOSSwift
- Swift 專案總結 03 自定義 CollectionView 佈局SwiftView
- Swift 專案總結 04 - 自定義控制器轉場Swift
- Swift 專案總結 04 自定義控制器轉場Swift
- Swift UIWebView 獲取404,504等載入自定義介面SwiftUIWebView
- Swift 小貼士:語言的擴充套件和自定義Swift套件
- 自定義View:自定義屬性(自定義按鈕實現)View
- 使用AVPlayer自定義支援全屏的播放器(五)—Swift重構版本播放器Swift
- 【Swift】自定義控制元件無限輪播 + 無限圖片輪播Swift控制元件
- Swift中使用MPMoviePlayerController實現自定義視訊播放器介面SwiftController播放器
- 08.Django自定義模板,自定義標籤和自定義過濾器Django過濾器
- 自定義ImageView完成圓形頭像自定義View
- 自定義VIEWView
- 自定義圓環
- 自定義SnackBar
- 自定義useState
- 自定義_ajax
- 自定義Annotation
- 自定義OrderedMap
- 自定義 Drawable
- 自定義UICollectionViewLayoutUIView
- 自定義UITabBarUItabBar
- 自定義scrollbar
- 自定義Drawable
- 自定義ToastAST
- 自定義吐司
- 自定義表格