IOS開發UI基礎UIView

來源:互聯網
上載者:User

標籤:

主要介紹下UIView得基本概念和一些屬性的介紹至於屬性的使用者後面會由詳細的介紹

-、UIView基本概念1.什麼是控制項?

螢幕上所有的UI元素都叫做控制項 (也有很多書中叫做視圖 組件) 比如 按鈕(UIButton) 文本(UILabel)都是控制項

控制項的共同屬性有哪些?

尺寸

位置

背景色

...........

蘋果將控制項的共同屬性都抽取到父類UIView中 所有的控制項最終都繼承自UIView中 UIBUtton UIView都繼承自UIView

 

父控制項、子控制項

每個控制項都是個容器 能夠容納其他控制項

內部小控制項是大控制項的子控制項

大控制項是內部小控制項的父控制項

每一個控制器(UIViewController) 內部都有個預設的UIView屬性控制器中管理的其他所有控制項都是這個view的直接或間接子控制項

@property(nonatomic,retain)UIView* view; 

 

2.UIView的常見屬性 @property(nonatomic,readonly) UIView *superview;    ? 獲得?自?己的?父控制項對象  

@property(nonatomic,readonly,copy) NSArray *subviews; ? 獲得?自?己的所有?子控制項對象

 

@property(nonatomic) NSInteger tag; ? 控制項的ID(標識),?父控制項可以通過tag來找到對應的?子控制項

 

@property(nonatomic) CGAffineTransform transform;? 控制項的形變屬性(可以設定旋轉?角度、?比例縮放、平移等屬性)

 

- (void)addSubview:(UIView *)view; ? 添加?一個?子控制項view

- (void)removeFromSuperview;  ? 從?父控制項中移除


- (UIView *)viewWithTag:(NSInteger)tag;  ? 根據?一個tag標識找出對應的控制項(?一般都是?子控制項)

介紹以下三個屬性之前 首先我們要瞭解以下UIKit座標系:

在UIKit中 座標系的原點(0,0)在左上方 X值向右正向延伸 Y值向下正向延伸

@property(nonatomic) CGRect frame;? 控制項矩形框在?父控制項中的位置和尺?寸(以?父控制項的左上?角為座標原點)  @property(nonatomic) CGRect bounds;? 控制項矩形框的位置和尺?寸(以?自?己左上?角為座標原點,所以bounds的x、y?一般為0)  @property(nonatomic) CGPoint center;? 控制項中點的位置(以?父控制項的左上?角為座標原點)  UIView屬性設定樣本1.alpha :設定視圖的透明度 預設為1 
1 self.view.alpha = 0 //完全透明2 3 self.view.alpha = 1; //不透明

2.clipsToBounds 預設是NO 設定為YEW時 超出當前視圖的尺寸的內容和子視圖不會顯示

self.view.clipsToBounds = YES; //超出view的尺寸的內容和子視圖不會顯示

 3.hidden 預設是NO 當設定為YES時 視圖就看不見了

1 self.view.hidden=YES ;// 隱藏當前視圖 

4.userInteractionEnabled 預設為YES 如果設定為NO View就不能和使用者互動了 即不能響應事件

self.view.userInteractionEnabled = NO; //不能和使用者互動 不能響應事件

 5.tag 預設為0 用來標記控制項的

self.view.tag = 10 ; //為view這個視圖做一個標記為10  預設所有控制項的標記為0

 6.exclusiveTouch  預設為NO

exclusiveTouch 的意義在於: 如果當前設定了exclusiveTouch的UIView是整個觸摸事件的第一響應者 那麼到你所有的手指離開螢幕前其他的UIView是無法接受到整個事件周期內所有的觸摸事件

7.CGRect frame

>表示控制項的位置和尺寸 以父控制項的左上方為座標原點(0,0)

>修改這個屬性 可以調整控制項的位置和尺寸

8.CGPoint center

>表示控制項的中點 以父控制項的左上方為座標原點

>修改這個屬性 可以調整控制項的位置

9.CGRect bounds

>表示控制項的位置和尺寸 以自己的左上方為座標原點 位置一般是(0,0)

>修改這個屬性 只能調整控制項的尺寸

10.CGAffineTransform transform

>表示控制項的形變狀態  旋轉角度 縮放比例

>建立CGAffineTransform 的函數

CGAffineTransformMakeScale(CGFloat scaleX,CGFloat scaleY);//建立一個x,y方向的縮放比例分別為scaleX 、scaleY的形變值CGAffineTransformMakeRotation(CGFloat angle);//建立一個旋轉角度為angle的形變值CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy);//在形變值t的基礎上,再進行縮放,x、y方向的縮放比例分別為sx、sy,然後返回一個新的形變值 CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);//在形變值t的基礎上,再進行旋轉,旋轉角度為angle,然後返回一個新的形變值

 11.superview

返回當前視圖的父視圖

12.window 返回當前視圖的視窗

擷取根視圖的superview 和 window 時 需要注意 在viewdidload中是擷取不到的 viewdidload只是視圖載入完成時調用,這個時候並沒有添加到視窗中 因此需要在viewDidAppear方法中才能夠擷取到 那時候視圖才被添加到視窗中

舉例:

- (void)viewDidLoad {    [super viewDidLoad];    NSLog(@"viewDidLoad-------%@",self.view.superview); //沒有值    NSLog(@"viewDidLoad--------%@",self.view.window);//沒有值}- (void)viewDidAppear:(BOOL)animated{    NSLog(@"viewDidAppear ----- %@",self.view.superview); //有值    NSLog(@"viewDidAppear -----%@",self.view.window);//有值}

 

13.autoresizesSubviews 預設為YES 表示當父控制項的尺寸發生改變時 子控制項也會隨著改變

14.autoresizingMask 預設為UIViewAutoresizingNone 不會自動調整

15.contentMode 設定內容模式

UIViewContentModeScaleToFill  不按照原寬高比例(長和寬不等比例增長)以任意比例填充。這樣視圖不會有空白,且內容可以全部顯示。
UIViewContentModeAspectToFill  按照原長寬比例填充,不完全顯示全部內容。這樣內容可能溢出,但整個視圖不會留有空白。
UIViewContentModeAspectToFit   按照原長寬比例(長和寬等比例增長),完全顯示全部內容。這樣容易照成左右或者上下留有空白。

16.backgroundColor 背景顏色
self.view.backgroundColor = [UIColor redColor];  // 設定背景顏色為紅色

UIView常用添加子視圖的方法
  • addSubview  添加一個控制項到一個控制項裡面
  • bringSubviewToFront 將一個控制項移到前面
  • sendSubviewToBack 將一個控制項移到後面
  • removeFromSuperview 把控制項移除
  • insertSubview:atIndex 插入視圖並指定索引
  • insertSubview:aboveSubview;插入視圖到某一個視圖之上
  • insertSubview:belowSubview ;插入視圖到某個視圖之下
  • exchangeSubviewAtIndex:withSubviewAtIndex:
 以上屬性的用法 讀者可以自己逐一嘗試 ,不用記住 暫時瞭解下即可  後面我會對每一個屬性的用法 利用一些小案例對他們進行深入的講解
 

IOS開發UI基礎UIView

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.