2016-07-16 3 views
0

NSTimer을 사용하여 앱이 작동 중임을 사용자에게 알립니다. 진행 막대는 지난 3 초 동안 설정되지만 실행 중일 때는 '똑딱 거리는'동작으로 표시되며 부드럽게 움직이지 않아야합니다. 어쨌든 더 부드럽게 만들 수 있습니까? 저는 제 계산 오류입니다. ,UIProgressView가 NSTimer에서 예상대로 작동하지 않음 - Swift

func setProgress(_ progress: Float, animated animated: Bool) 

그것은 수신기에 의해 표시되는 현재의 진행 상황을 조정 : 애플의 iOS SDK의 문서에 따라 경찰은 다음 API를 사용하여 그것을 달성 할 수

import UIKit 

class LoadingScreen: UIViewController { 

    var time : Float = 0.0 
    var timer: NSTimer? 

    @IBOutlet weak var progressView: UIProgressView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do stuff 

     timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector:Selector("setProgress"), userInfo: nil, repeats: true) 

    } //close viewDidLoad 

    func setProgress() { 
     time += 0.1 
     progressView.progress = time/3 
     if time >= 3 { 
      timer!.invalidate() 
     } 
    } 
} 

답변

0

: 여기

코드입니다 선택적으로 변경 사항을 애니메이션으로 나타냅니다.

매개 변수 :
- 새로운 진행률 값입니다.

animated - true 변경 사항을 애니메이션으로 적용하려면 false 즉시 변경해야합니다. 이에

상세 정보 :
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIProgressView_Class/index.html#//apple_ref/occ/instm/UIProgressView/setProgress:animated :

따라서 귀하의 경우에는이처럼을 수행해야합니다

또한
func setProgress() { 
    time += 0.1 

    dispatch_async(dispatch_get_main_queue()) { 
     progressView.setProgress(time/3, animated: true) 
    } 

    if time >= 3 { 
     timer!.invalidate() 
    } 
} 

는 메인 UI 업데이트를 수행하는 것이 좋습니다 유의하시기 바랍니다 스레드, 그래서 그냥 주 큐에서 진행 업데이트를 보냈습니다.
희망이 있으면 도움이 될 것입니다.

+0

답장을 보내 주셔서 감사합니다. 난 내 질문을 제대로받지 못했다고 생각합니다. 내 진행 상황이 잘 작동하고 애니메이션도 있습니다. –