2016-04-07 59 views
0

對不起提前noob問題:斯威夫特UIView的自定義位置

我有低於功能與一個捕捉這一觀點涵蓋了按鈕i對屏幕的底部完美的作品。我怎樣才能調整這個功能,因爲只有在按鈕的屏幕底部留下50px的空間。是否可以使用mainScreen()。bounds,並在頂部或底部留下一些空間?

func flashColor() { 
    if let window = self.view{ 
     let screenSize: CGRect = UIScreen.mainScreen().bounds 
     let v = UIView(frame: screenSize) 

     v.backgroundColor = colors[i] 
     v.alpha = 1 

     if i < 4 { 
      i += 1 
     } else { 
      i = 0 
     } 

     window.addSubview(v) 
     UIView.animateWithDuration(1, animations: { 
      v.alpha = 0.0 
      }, completion: {(finished:Bool) in 
       print(i) 
       v.removeFromSuperview() 
     }) 

    } 
} 

回答

1

一般來說,最好是避免使用UIScreen.mainScreen()。界限,因爲這將返回的邊界爲整個設備屏幕。雖然在分屏多任務處理之前,假設您的應用程序將接管整個屏幕,但現在情況更長,通常可以。您可以改爲使用視圖控制器的視圖邊界。如果你想以覆蓋從頂部視圖控制器的觀點到50點,你可以說類似的底部之上:

func flashColor() { 
    if let vcView = self.view{ 
     let viewSize: CGRect = CGRect(x:0.0,y:0.0,width:vcView.bounds.size.width,height:vcView.bounds.size.height - 50.0) 
     let v = UIView(frame: viewSize) 

     v.backgroundColor = colors[i] 
     v.alpha = 1 

     if i < 4 { 
      i += 1 
     } else { 
      i = 0 
     } 

     window.addSubview(v) 
     UIView.animateWithDuration(1, animations: { 
      v.alpha = 0.0 
      }, completion: {(finished:Bool) in 
       print(i) 
       v.removeFromSuperview() 
     }) 

    } 
} 
+0

現在不能測試,但我相信你也需要v.translatesAutoresizingMaskIntoConstraints = YES ; – user3802077

+0

似乎沒有它在我的本地設備上工作,但我對這個話題知之甚少。 –