1. 程式人生 > >iOS常用UI控制元件屬性及簡單動畫

iOS常用UI控制元件屬性及簡單動畫

-通過center修改位置

-center是CGPoint型別,是view正中間的點

-通過frame修改大小

  • 通過frame修改大小時左上角原點不動

-通過bounds修改大小

  • bounds 和 frame 都是CGRect的型別
  • bounds 預設的原點是 0,0
  • 通過bounds修改大小時中心點不動
  • center只能修改位置,bounds只能修改大小,frame既能修改位置也能修改大小

-通過transform修改位置(平移)

  • CGAffineTransformMakeTranslation(X偏移量, Y偏移量);
  • CGAffineTransformTranslate(在某個transform的基礎上-一般為自身
    , X偏移量, Y偏移量);

-通過transform修改大小(縮放)

  • CGAffineTransformMakeScale(寬縮放的倍數, 高縮放的倍數);
  • CGAffineTransformScale(在某個transform的基礎上-一般為自身, 寬縮放的倍數, 高縮放的倍數);

-通過transform進行旋轉(旋轉)

  • CGAffineTransformMakeRotation(旋轉的弧度);
  • CGAffineTransformRotate(在某個transform的基礎上-一般為自身, 旋轉的弧度);

-恢復transform形變

  • 在發生形變的時候蘋果推薦使用transform.
  • 形變的時候frame發生變化,bounds不發生變化.
  • CGAffineTransformIdentity的含義?
    • 最原始的transform

-頭尾式動畫(瞭解)

  • [UIView beginAnimations:nil context:nil];
    • 準備開始動畫
  • [UIView setAnimationDuration:5];
    • 設定時間
  • [UIView commitAnimations];
    • 提交動畫(真正開始做動畫)

-塊動畫

  • +(void)animateWithDuration:(NSTimeInterval)duration
    animations:(void (^)(void))animations
    completion:(void (^__nullable)(BOOL finished))completion;

  • +(void)animateWithDuration:(NSTimeInterval)duration
    animations:(void (^)(void))animations;

  • +(void)animateWithDuration:(NSTimeInterval)duration
    delay:(NSTimeInterval)delay
    usingSpringWithDamping:(CGFloat)dampingRatio
    initialSpringVelocity:(CGFloat)velocity
    options:(UIViewAnimationOptions)options
    animations:(void (^)(void))animations
    completion:(void (^__nullable)(BOOL finished))completion;

    • duration : 動畫時間
    • delay : 延遲時間
    • dampingRatio : 阻尼係數(彈性) 越小越彈
    • velocity : 速率
    • options : 選項
    • animations : 做動畫的程式碼塊
    • completion : 動畫完成的程式碼塊 “回撥”

-序列幀動畫實現

  • 方法1
    • -[UIImage animatedImageWithImages:動畫陣列 duration:持續時間]; // 可以獲取一個能做動畫的UIImage物件
  • 方法2
    • self.imageView.animationImages = array; // 裝圖片的陣列(需要做動畫的圖片陣列)
    • self.imageView.animationDuration = 2; // 動畫時間
    • self.imageView.animationRepeatCount = 1; // 重複次數 0 表示重複
    • [self.imageView startAnimating]; // 開始序列幀動畫