知識點: 1.UIView的簡單動畫 2.UIView層次關係 3.UIImageView的使用 4.UIView 停靠模式 UIView的簡單動畫 1.UIView坐標系統 1)UIView相對於父視圖的坐標系統 2.UIView的frame,center,bounds關係 frame: 該vie ...
知識點:
1.UIView的簡單動畫
2.UIView層次關係
3.UIImageView的使用
4.UIView 停靠模式
=====================
UIView的簡單動畫
1.UIView坐標系統
1)UIView相對於父視圖的坐標系統
2.UIView的frame,center,bounds關係
frame: 該view在父view坐標系統中的位置和大小。(參照點是,父親的坐標系統)
bounds: 該view在本地坐標系統中的位置和大小。(參照點是,本地坐標系統)
center: 該view的中心點在父view坐標系統中的位置。(參照點是,父親的坐標系統)
3.設置透明度
@property(nonatomic) CGFloat alpha
view1.alpha = 0.2;
4.UIView中的簡單動畫效果1
1.開始動畫
+(void)beginAnimations:(NSString *)animationID context:(void *)context;
2.持續時間
+(void)setAnimationDuration:(CFTimeInterval)dur;
3.提交動畫(運行動畫)
+(void)commitAnimations;
//開啟動畫
[UIView beginAnimations:nil context:nil];
//設置動畫持續時間
[UIView setAnimationDuration:5.0];
//提交動畫
[UIView commitAnimations];
5. UIView中的簡單動畫效果2
+ (void)animateWithDuration:(NSTimeInterval)duration
animations:(void (^)(void))animations
completion:(void (^)(BOOL finished))completion
//開始動畫 [UIView animateWithDuration:2.0 animations:^{ //提交的動畫內容 //改變view1的位置 view1.center = CGPointMake(CGRectGetWidth(self.window.frame) - 50, CGRectGetHeight(self.window.frame) - 50); //改變綠色 view1.backgroundColor = [UIColor greenColor]; } completion:^(BOOL finished) { //上述動畫執行完畢之後,會回調此block當中的代碼塊 //開啟動畫 [UIView animateWithDuration:2.0 animations:^{ //恢複原位 view1.center = CGPointMake(50, 70); view1.backgroundColor = [UIColor orangeColor]; }]; }];
=====================
UIView層次關係
1.如何在UIView上疊加新的UIView
- (void)addSubview:(UIView *)view;
[self.window addSubview:view1];
2.如何獲取UIView的父視圖
@property(nonatomic,readonly) UIView *superview;
//從一個子視圖當中獲取它的父視圖對象
NSLog(@"sView3.superview = %p fView = %p",sView3.superview,fView);
3.如何獲取UIView子視圖
@property(nonatomic,readonly,copy) NSArray *subviews; //從父視圖當中獲取到它之上的所有子視圖
for (UIView *tempView in fView.subviews)
4.把一個子視圖移動到最前端
- (void)bringSubviewToFront:(UIView *)view;
//移動某個子視圖到最前端
[fView bringSubviewToFront:sView1];
//移動某個子視圖到最後端
[fView sendSubviewToBack:sView2];
5.交換子視圖的圖層
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;
//交換連個視圖的圖層
[fView exchangeSubviewAtIndex:0 withSubviewAtIndex:2];
6.如何在特定位置插入一個視圖
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
//插入視圖
[fView insertSubview:sView4 atIndex:1];
7.如何刪除一個視圖(該函數是給要刪除的視圖發送)
- (void)removeFromSuperview;
ps:removeFromSuperview:將一個視圖從父視圖當中移除,同時會移除該視圖上的所有子視圖
//一次性刪除這個視圖上的所有子視圖
[tempView removeFromSuperview];
8.如何剪切一個視圖超出父視圖之外的部分
@property(nonatomic) BOOL clipsToBounds;
//剪裁超出父視圖的部分
fView.clipsToBounds = YES;
9.如何隱藏和顯示一個UIView
@property(nonatomic,getter=isHidden) BOOL hidden;
//隱藏一個視圖
sView1.hidden = YES;
10.檢測視圖之間的關係
- (BOOL)isDescendantOfView:(UIView *)view;
//檢測一個視圖是否為另外一個視圖的子視圖
if ([sView2 isDescendantOfView:fView]) {
NSLog(@"sView2是fView的子視圖");
}
=====================
UIImageView使用
1.如何重新設置圖片內容
@property(nonatomic,retain) UIImage *image
2.如何解決圖片內容變形問題(該屬性由UIView繼承)
@property(nonatomic) UIViewContentMode contentMode
UIViewContentModeScaleToFill 拉伸內容,會導致內容變形
UIViewContentModeScaleAspectFit 拉伸內容,內容比例不變
UIViewContentModeScaleAspectFill 拉伸內容,內容比例不變,但是有可能部分內容不能顯示
imageView.contentMode = UIViewContentModeScaleAspectFill;
=====================
簡單的手勢操作
UITapGestureRecognizer 點擊
UIPinchGestureRecognizer 二指往內或往外撥動,平時經常用到的縮放
UIRotationGestureRecognizer 旋轉
UISwipeGestureRecognizer 滑動,快速移動
UIPanGestureRecognizer 拖移,慢速移動
UILongPressGestureRecognizer 長按
/* 參數1:目標對象 參數2:回調的方法 */ UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTap:)]; //雙擊觸發 tap.numberOfTapsRequired = 2; //添加手勢到Window之上 [self.window addGestureRecognizer:tap]; //快速滑動 UISwipeGestureRecognizer *swi = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(myTap:)]; /* typedef NS_OPTIONS(NSUInteger, UISwipeGestureRecognizerDirection) { UISwipeGestureRecognizerDirectionRight = 1 << 0, UISwipeGestureRecognizerDirectionLeft = 1 << 1, UISwipeGestureRecognizerDirectionUp = 1 << 2, UISwipeGestureRecognizerDirectionDown = 1 << 3 }; */ //設置支持的方向 //水平和豎直方向能支持其中一種 swi.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown; [self.window addGestureRecognizer:swi]; //長按手勢 //長按之後,滑動也會觸發,放手也會觸發一次 UILongPressGestureRecognizer *longGes = [[UILongPressGestureRecognizer alloc] initWithTarget:self action: @selector(myTap:)]; //觸發事件需要的最短時間 longGes.minimumPressDuration = 1; [self.window addGestureRecognizer:longGes]; //關閉人機交互開關 //self.window.userInteractionEnabled = NO; /* 註意事項: 1.每一個UIView都有一個屬性userInteractionEnabled,如果這個屬性值為NO,則無法觸發事件(包括手勢和btn的點擊事件) 2.UILabel,UIImageView在實例化出來的時候,預設userInteractionEnabled的值為NO 3.如果父視圖的userInteractionEnabled的值為NO,則子視圖也不可以響應事件 4.如果視圖被隱藏,也不可以響應事件 */ ps:當視圖hidden屬性設置為YES的時候,或者userInteractionEnabled=NO 的時候,就無法進行人機交互
=====================
UIView 停靠模式
1.自動佈局:當父視圖變化時子視圖如何變化
1)先設置父視圖的autoresize屬性為YES
2)再設置子視圖的mask屬性
//設置停靠模式
//父視圖設置autoresizesSubviews
fView2.autoresizesSubviews = YES;
//子視圖設置停靠的模式
//UIViewAutoresizingFlexibleLeftMargin 子視圖到父視圖的右邊距距離固定
//UIViewAutoresizingFlexibleWidth 寬度是可變的
sView2.autoresizingMask = UIViewAutoresizingFlexibleWidth;
@property(nonatomic) BOOL autoresizesSubviews;
@property(nonatomic) UIViewAutoresizing autoresizingMask;
UIViewAutoresizingNone
就是不自動調整。
UIViewAutoresizingFlexibleLeftMargin
自動調整與superView左邊的距離,保證與superView右邊的距離不變 UIViewAutoresizingFlexibleRightMargin
自動調整與superView的右邊距離,保證與superView左邊的距離不變。 UIViewAutoresizingFlexibleTopMargin
自動調整與superView頂部的距離,保證與superView底部的距離不變。 UIViewAutoresizingFlexibleBottomMargin
自動調整與superView底部的距離,保證與superView頂部的距離不變。 UIViewAutoresizingFlexibleWidth
自動調整自己的寬度,保證與superView左邊和右邊的距離不變。 UIViewAutoresizingFlexibleHeight
自動調整自己的高度,保證與superView頂部和底部的距離不變。