国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

i-OS動畫――啥?AutoLayout還能做動畫?

2019-11-02 14:35:56
字體:
來源:轉載
供稿:網友

   是的,很明確的告訴各位看官,AutoLayout的確能做動畫。AutoLayout是用來做各種約束,是用來適配不同屏幕的,那么當我們改變其中某些約束并講這個改變的過程以緩慢的速度顯示,那么是不是就實現了動畫~

  先來看一個酷炫的動畫,這個動畫由書籍iOS Animations by tutorials提供:

iOS動畫——啥?AutoLayout還能做動畫? 電腦高手

  由書籍iOS Animations by tutorials提供

  接下來我們將圍繞這個動畫的實現過程來進行敘述。

  首先給我們最上方的這個類似Navigation的menu做動畫,很明顯我們在這里是改變了這個view的Height,既然如此,我們首先要做的就是獲取這個menuView的約束條件,我們在代碼中添加以下一行:

  @IBOutlet var menuHeightConstraint: NSLayoutConstraint!

  如何給約束條件做關聯,首先找到我們的約束條件:

這個就是我們的menuView的高度的約束條件

  這個就是我們的menuView的高度的約束條件

  雙擊這個約束條件,然后選擇Connections Inspector,如下圖操作:

1.png

  1.png

  然后選擇menuHeightConstraint,這樣我們就給約束條件做了一個關聯。

  現在我們在那個“+”按鈕的方法里添加以下代碼:

  isMenuOpen = !isMenuOpen

  menuHeightConstraint.constant = isMenuOpen ? 200.0 : 60.0

  titleLabel.text = isMenuOpen ? "Select Item" : "Packing List"

  UIView.animateWithDuration(1.0, delay: 0.0,

  usingSpringWithDamping: 0.4, initialSpringVelocity: 10.0,

  options: .CurveEaseIn, animations: {

  self.view.layoutIfNeeded()

  let angle = self.isMenuOpen ? CGFloat(M_PI_4) : 0.0

  self.buttonMenu.transform = CGAffineTransformMakeRotation(angle)

  }, completion: nil)

  我們來看一下效果,我可以看到menuView很拽的下來了,還duang~duang~duang~的。這段代碼在上一篇我們大多都講過了,除了這個函數:

  self.view.layoutIfNeeded()

  這個函數是什么意思呢,你可以這樣理解,AutoLayout對于約束試一次計算,一次實現,但是當你加上這個函數以后,View還是一次實現了~~~額~~~但是,iOS沒有機會去刷新視圖,所有就會有動畫的效果。~這一點好像和那個很廢的包,java里的‘swing’有點類似~~~

  對于 UIView.animateWithDuration這個函數若是有什么不懂的,請自行參考我的上一篇文章。

  很多時候,我們不能或者不想給我們的約束做一個關聯,那么這個時候我們如何獲取我們的約束從而改變他呢?我們這里有一個函數.constraints()這個函數返回一個數組,這個數組中有這個控件的所有的約束。接下來我們給標題添加動畫,我們上面看到,動畫中標題duang~的一下跑到了左邊。

  for constraint in titleLabel.superview!.constraints() as! [NSLayoutConstraint] {

  if constraint.secondItem as? NSObject == titleLabel && constraint.secondAttribute == .CenterX {

  constraint.constant = isMenuOpen ? 100.0 : 0.0

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白朗县| 辰溪县| 安庆市| 阿克苏市| 绩溪县| 奉化市| 班玛县| 汤原县| 墨脱县| 闽清县| 开封县| 伊宁市| 四子王旗| 康平县| 桐城市| 盱眙县| 阆中市| 济宁市| 福贡县| 仙桃市| 弋阳县| 枣阳市| 横山县| 科技| 姚安县| 六枝特区| 城口县| 柳江县| 稻城县| 原平市| 定陶县| 阳山县| 仪陇县| 宜昌市| 凉城县| 谢通门县| 盐山县| 荣成市| 鄯善县| 雷州市| 南木林县|