知識點:
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頂部和底部的間隔不變。
【iOS開發-UI (七)view層次動畫 和 ImageView】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!