2016-05-25 11 views
0

Ivはこの新しいゲームを数ヶ月間働いていて、私は理解できない問題に遭遇しています!UIVIewのTopLeftにUILabelを作成し、下に向かってアニメーションしますか?

基本的に私はUIViewControllerの右上に「ステータスセクション」を作成しています。この「ステータスセクション」には、ステータス更新をStringsとして保持するUILabelsが表示されます。これらのUILabelsは、UIViewの左上に表示され、ゆっくり下に移動し、同時にAlphaを失います。一度底に達すると、消えます。

Iv完了?

これまでのコードでわかるように、Ivはランダムな場所にUILabelを作成することができましたが、なんらかの理由でUILabelsが画面外に出てしまいます。

enter image description here

コード

func createStatus() { 


     let viewWidth = self.statusView.frame.width 
     let viewHeight = self.statusView.frame.width 

     let randomX = CGFloat(viewWidth/2) 
     let randomY = CGFloat(arc4random_uniform(UInt32(viewHeight)) + 50) 


     let frame = self.statusView.frame.origin 

     let status = UILabel(frame: CGRect(origin: CGPoint(x: CGFloat(viewWidth/4) - 20, y: CGFloat(viewHeight - viewHeight) + 10), size: CGSize(width: 200.0, height: 50.0))) 

     status.text = "This is a status" 
     status.textColor = UIColor.redColor() 
     status.alpha = 1 
     self.statusView.addSubview(status) 
     print("Status made") 
     UIView.animateWithDuration(2) { 
      status.center = frame 
      status.alpha = 0 

     } 

    } 

IVは同様に問題とUIView statusViewの画像を追加しました。左上のiILabelとi'vを作成する際に問題が発生しましたが、下のコードを試してみると、画面上にUILabelを「スポーン」さえしません。

let frame = self.statusView.frame.origin 
CGPoint topLeft = CGPointMake(CGRectGetMinX(frame), CGRectGetMinY(frame)); 

答えて

2
func createStatus() { 


    let viewWidth = self.statusView.frame.width 
    let viewHeight = self.statusView.frame.width 

    //Why are these here? 
    let randomX = CGFloat(viewWidth/2) 
    let randomY = CGFloat(arc4random_uniform(UInt32(viewHeight)) + 50) 


    let origin = CGPointZero//Origins are relative to superview, so top left would be (0, 0) 

    //Renamed status to statusLabel so that we know its a label and not a model object 
    let statusLabel = UILabel(frame: CGRect(origin: origin, size: CGSize(width: 200.0, height: 50.0))) 

    statusLabel.text = "This is a status" 
    statusLabel.textColor = UIColor.redColor() 
    statusLabel.alpha = 1 
    self.statusView.addSubview(statusLabel) 
    print("Status made") 
    UIView.animateWithDuration(2) { 
     //Animate the origin instead of center position. 
     //The origin will be the height of the statusView - the height of your label. x stays 0 to keep it along left edge. 
     statusLabel.frame.origin = CGPoint(x: 0, y: self.statusView.frame.height - statusLabel.frame.height) 
     statusLabel.alpha = 0 

    }, { (completed) in 
     if completed { 
      //If statusLabel doesn't have a superView it will be dealloc after the function goes out of scope. So remove it from superview after animaion is complete and ARC takes care of it. 
      statusLabel.removeFromSuperview() 
     } 

    } 

} 
+0

うーん、私はこれらの2つのエラーを得た。.. http://i.imgur.com/XxAayjd.png – brkr

+0

また、それはUILabelのこれが作成を削除することをお勧めでしょうか?平均して各ユーザーはこのボタンを1,000回以上押すことができます....簡単に..もしそうなら、私のメモリが管理されるようにそれらを削除する方法を教えてください。 – brkr

+0

あなたの伝説!助けてくれてありがとうございます。完璧なブロックまで私はこのエラーを取得しています - http://i.imgur.com/HhI6AS2.png – brkr

関連する問題