iOS開發-UI (七)view層次動畫 和 ImageView,-uiimageview

來源:互聯網
上載者:User

iOS開發-UI (七)view層次動畫 和 ImageView,-uiimageview

知識點:

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頂部和底部的距離不變。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.