標籤:ui ios objetive-c
不多說,先片看效果,貓貓分享,必須精品
這個小程式主要實現點擊方向鍵可以讓表徵圖上下左右動還有放大縮小以及旋轉的功能,點擊圖片會顯示另一張圖片。
點擊變換
其實用到了按鈕的兩個狀態,再State Config中的Default還有Highlighted的兩個狀態下background內容圖片的設定
其實就是按鈕的幾個狀態:
Default:預設狀態
Highlighted:被點擊時候的高亮狀態
Selected:被選中的時候的狀態
Disabled:不能使用的時候的狀態
移動
- (IBAction)move:(UIButton *)button { //獲得frame CGRect frame = self.iconButton.frame; //根據按鈕的類型來修改frame屬性 switch (button.tag) { case kMovingDirTop:/**向上移動*/ frame.origin.y -=20; break; case kMovingDirBottom:/**向下移動*/ frame.origin.y +=20; break; case kMovingDirLeft:/**向左移動*/ frame.origin.x -=20; break; case kMovingDirRight:/**向右移動*/ frame.origin.x +=20; break; }
這是實現的主要方法,實現方法其實很多,這方法也不是最好的,可以參考。
這裡需要注意的是:frame
對於類UIView(UIButton等等都是繼承自他,可以看成在手機上顯示的所有東西都是這個)有屬性在螢幕上的位置等等最重要的屬性是位置和大小。
我們可以通過按住command + 滑鼠左鍵(ctrl+command+j)進入看原始碼
通過看源碼,我們發現他定義了三個:
@property(nonatomic) CGRect frame;@property(nonatomic) CGRect bounds; @property(nonatomic) CGPoint center;
這裡有:
frame:主要管位置和大小(初始化的時候用,其他時候改變要用下下面兩個)
bounds:他的圓點是0,主要管大小
center:主要是點,決定位置
他們的類型是
(結構體struct)CGRect
struct CGRect { CGPoint origin; CGSize size;};
而他又包括point和size 當然這兩個也是結構體,看名字就知道他們是幹嘛的了例如origin是:
struct CGPoint {/*決定在螢幕上xy座標*/
CGFloat x;
CGFloat y;
};
而你要是再看看,其實CGFloat就是double
# define CGFLOAT_TYPE double
放大縮小功能
//放大縮小- (IBAction)zoom:(UIButton *)button{ //取出bounds CGRect bounds = self.iconButton.bounds; if(button.tag){ NSLog(@"放大"); bounds.size.width +=20; bounds.size.height +=20; }else{ bounds.size.width -=20; bounds.size.height -=20; NSLog(@"縮小"); } //加動畫 //動畫開始 [UIView beginAnimations:nil context:nil]; //設定期間 [UIView setAnimationDuration:1.0]; //放大縮小了的bounds放回到原來button中 self.iconButton.bounds = bounds; //提交動畫 [UIView commitAnimations];}
在這裡我並沒有用frame來修改,而是用了bounds的屬性,其實本質上還是底層的CGSize而已
在這裡為了學習,我又添加了一段動畫代碼IOS的動畫很人性化,比安卓強了不止一點半點鐘。要注意,學習起來一定要點進去看看,不會的就試試,重要的東西一般會放在代碼的靠上的部位。
旋轉功能
//旋轉- (IBAction)rotate:(UIButton *)button{ //旋轉主要用到角度,OC中用的是弧度 CGFloat angle = (button.tag) ? M_PI_4 : -M_PI_4; self.iconButton.transform = CGAffineTransformRotate(self.iconButton.transform, angle); NSLog(@"%@",NSStringFromCGAffineTransform(self.iconButton.transform));}
好了,準系統完成了。剩下的大家可以自己嘗試,完善。不過不要放慢學習的腳步哦。
PS1.需要學習資料的可以加我 znycat
PS2.為了學習,我一周會更新最少(%d),未知。次;
貓貓學IOS(一)UI之按鈕操作 點擊變換 移動 放大縮小 旋轉