2016-03-27 1 views
0

У меня есть два ViewController.Когда я выполняю segue, чтобы круг ViewController уже заполнен

  1. Basic View Controller с помощью одной кнопки, эта кнопка выполняет переход (Present модально) в TimerViewController
  2. TimerViewController - это View Controller оживляющий обратный отсчет в круг.

Если я установил TimerViewController в качестве элемента управления начальным представлением, все работает как чары, отсчет таймера и круг, заполненный красным цветом, как отсчет времени. Pls смотри скриншот: http://i.imgur.com/TiBdUUS.png

Но если я выполню segue с первого взгляда Контроллер на TimerViewController, кружок уже заполнен красным цветом. Pls см. Скриншот: http://i.imgur.com/8D0IWiJ.png

Я не могу понять, что не так с этим кодом и почему круг заполнен? Вот мой код:

class TimerViewController: UIViewController { 

// View 500x500 
@IBOutlet weak var plView: UIView! 

// define the time left 
let timeLeftShapeLayer = CAShapeLayer() 
let bgShapeLayer = CAShapeLayer() 
var timeLeft: NSTimeInterval = 60.0 
var endTime: NSDate! 
var timeLabel = UILabel() 
var timer = NSTimer() 

// here you create your basic animation object to animate the strokeEnd 
let strokeIt = CABasicAnimation(keyPath: "strokeEnd") 


// at viewDidload set the endTime and add your CAShapeLayer to your view: 
override func viewDidLoad() { 
    super.viewDidLoad() 
    plView.backgroundColor = UIColor(white: 0.94, alpha: 1.0) 

    drawBgShape() 
    drawTimeLeftShape() 
    addTimeLabel() 

    // here you define the fromValue, toValue and duration of your animation 
    strokeIt.fromValue = 0.0 
    strokeIt.toValue = 1.0 
    strokeIt.duration = 60.0 

    // add the animation to your timeLeftShapeLayer 
    timeLeftShapeLayer.addAnimation(strokeIt, forKey: nil) 

    // define the future end time by adding the timeLeft to now NSDate() 
    endTime = NSDate().dateByAddingTimeInterval(timeLeft) 
    timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(TimerViewController.updateTime), userInfo: nil, repeats: true) 
} 


// define a method to create UIBezierPath 
// startAngle at -90˚ and endAngle 270 
func drawBgShape() { 
    bgShapeLayer.path = UIBezierPath(arcCenter: CGPoint(x: plView.frame.midX , y: plView.frame.midY), radius: 
     100, startAngle: -90.degreesToRadians, endAngle: 270.degreesToRadians, clockwise: true).CGPath 
    bgShapeLayer.strokeColor = UIColor.whiteColor().CGColor 
    bgShapeLayer.fillColor = UIColor.clearColor().CGColor 
    bgShapeLayer.lineWidth = 15 
    plView.layer.addSublayer(bgShapeLayer) 
} 
func drawTimeLeftShape() { 
    timeLeftShapeLayer.path = UIBezierPath(arcCenter: CGPoint(x: plView.frame.midX , y: plView.frame.midY), radius: 
     100, startAngle: -90.degreesToRadians, endAngle: 270.degreesToRadians, clockwise: true).CGPath 
    timeLeftShapeLayer.strokeColor = UIColor.redColor().CGColor 
    timeLeftShapeLayer.fillColor = UIColor.clearColor().CGColor 
    timeLeftShapeLayer.lineWidth = 15 
    plView.layer.addSublayer(timeLeftShapeLayer) 
} 

// add your Label 
func addTimeLabel() { 
    timeLabel = UILabel(frame: CGRectMake(plView.frame.midX-50 , plView.frame.midY-25, 100, 50)) 
    timeLabel.textAlignment = .Center 
    timeLabel.text = timeLeft.time 
    plView.addSubview(timeLabel) 
} 


// when updating the time 
func updateTime() { 
    if timeLeft > 0 { 
     timeLeft = endTime.timeIntervalSinceNow 
     timeLabel.text = timeLeft.time 
    } else { 
     timeLabel.text = "00:00" 
     timer.invalidate() 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

} 

} 

// extension convert the degrees to radians and display time 
extension Double { 
var degreesToRadians : CGFloat { 
    return CGFloat(self) * CGFloat(M_PI)/180.0 
} 
} 

extension NSTimeInterval { 
var time:String { 
    return String(format:"%02d:%02d", Int(self/60.0),  Int(ceil(self%60))) 
} 
} 

ответ

0

Попытка поставить круг код инициализации в методе viewDidAppear вместо viewDidLoad

+0

К сожалению, это не помогло – dakath

Смежные вопросы