iOS學習筆記——基礎控制元件(上)

林堯彬發表於2020-04-04

本篇簡單羅列一下一些常用的UI控制元件以及它們特有的屬性,事件等等。由於是筆記,相比起來不會太詳細

UIView

  所有UI控制元件都繼承於這個UIView,它所擁有的屬性必是所有控制元件都擁有,這些屬性都是控制元件最簡單最一般的屬性。

  • enable:是否啟用;
  • selected:是否被選擇;
  • contentVerticalAligement:內容是垂直方向的對齊方式,它是一個列舉,分別有UIControlContentVerticalAligementCenter/Top/Bottom/Fill;
  • contentHorizontalAlignment:內容是水平方向的對齊方式,它是一個列舉,UIControlContentHorizontalAligmentCenter/Left/Right/Center;
  • hidden: 顯示或者隱藏,BOOL型別;
  • frame:決定控制元件的大小和位置的結構體,與forstate混用有可能不起作用。

  OC不允許直接修改物件的結構體屬性的成員,但可以修改結構體的屬性,此時只能先宣告另外一個結構體修改結構體裡面的值後再對物件的結構體屬性重新設值。

  事件操作,這裡則介紹如何去以程式碼的形式給一個控制元件繫結和解綁事件。

  • 繫結事件:
[myControl addTarget:self action:@selector(myActionmethodName:)  forControlEvents:事件名];
  • 解綁事件:
[myControl removeTarget:self action:@selector(myActionmethodName:) forControlEvents:事件名];

 

這裡如果涉及到多個事件的話,可以用邏輯OR “||”合併在一起。

  • 獲得該控制元件所有註冊了事件的方法: NSSet *myActions=[myControl allTargets];
  • 獲得該控制元件所有註冊了該事件的方法:NSArray *myActions=[myControl actionForTarget:事件名];

  對於大多數事件的引數,第一個就是觸發該事件的控制元件,型別是id,在用程式碼繫結事件或者通過storyboard連線的方式繫結事件後,可以把id這個型別換成控制元件本身的型別,這樣在方法內部萬一要用回這個控制元件時就免得進行強制轉換了。

  在個事件部分最後搭上一個常用的事件,單擊事件 UIControlEventTouchUpInside。

UIButton

         按樣式去建立按鈕,

UIButton *btn= [UIButton buttonWithType:UIButtonTypeRoundedRect];

樣式有以下幾種

  • UIButtonTypeCustom,自定義的風格;
  • UIButtonTypeRoundRect,白色圓角矩形,這個是預設的;
  • UIButtonTypeDetailDisclosure:藍色披露按鈕,沒有文字;
  • UIButtonTypeInfolight:微件用的小圓圈資訊按鈕;(按鈕的底色預設是白色的,頁面底色已換成淺藍色)
  • UIButtonTypeInfoDark:背景下用神社圓圈的按鈕;
  • UIButtonTypeContactAdd:藍色加號”+“按鈕;

常用的屬性:

  • title:按鈕的內容;
  • image:按鈕的圖片;
  • titleColor:按鈕內容的顏色;
  • shadowColor:按鈕陰影部分的顏色;
  • backgroundImage:按鈕的背景圖;

以上這些屬性的設值方法如下

[btn setTitle:@”Button1” forState:…..];
[btn setImage:[UIImage imageName:@”圖片的檔名”] forState:…..];
[btn setTitleColor:[UIColor redColor] forState:…];
[btn setShadowColor:[UIColor redColor] forState:…..];
[bnt setBackgroundImage:[UIImage imageNamed:@”圖片檔名”] forState];

  設這類屬性都是帶了forState,代表了設的這個屬性只在某個狀態下才會生效,而按鈕的狀態有下面四個:UIControlstateNormal,UIControlStateHighlighted,UIControlStateDisabled,UIControlSeleted。

  設定按鈕的背景色則不需要連帶按鈕的顏色,只按照原本的屬性設定的就可以了:btn.backgroundColor=[UIColor clearColor];

UILabel

  Label是一個很簡單很簡單的控制元件了,這裡就列舉一下它的幾個屬性

  • text:文字內容;
  • textColor:文字的顏色;
  • textAlignment:水平對齊的方式,由於鄙人學習時是iOS6,在網上找到的很多資料都是早期版本的,不一樣的,這個需要分別列舉一下,在iOS6以後的版本,這個屬性是NSTextAlignment型別;它的值分別是
NSTextAlignmentLeft,
NSTextAlignmentCenter,
NSTextAlignmentRight,
NSTextAlignmentJustified,
NSTextAlignmentNatural

;在iOS5和更早的版本是UITextAligenment,它的值分別是

UITextAlignmentLeft,
UITextAlignmentCenter,
UITextAlignmentRight;
  • lineBreakMode:這個屬性比較重要,是控制單詞折行方式,它是NSLineBreakMode型別的列舉
   NSLineBreakByWordWrapping, // 以單詞為顯示單位顯示,後面部分省略不顯示
   NSLineBreakByCharWrapping, // 以字元為顯示單位顯示,後面部分省略不顯示
   NSLineBreakByClipping, //剪下與文字寬度相同的內容長度,後半部分被刪除。
   NSLineBreakByTruncatingHead, //前面部分文字以……方式省略,顯示尾部文字內容。
   NSLineBreakByTruncatingTail, //結尾部分的內容以……方式省略,顯示頭的文字內容。  
   NSLineBreakByTruncatingMiddle//中間的內容以……方式省略,顯示頭尾的文字內容。 
  • numberOfLines:控制內容是否以多行顯示,如果是0則是多行;

UIImageView

  這個是用於圖片顯示的控制元件,通過設定image屬性來顯示那幅圖片,在OC中圖片則是UIImage型別,這個型別在UIButton部分也出現過,用於設定按鈕的圖片和按鈕的背景圖,但是要獲取這個圖片,這裡有三種方式:

  • 本地資源

首先是要往專案裡面新增資源:在專案裡面的”專案名-Info.plist”檔案右鍵”AddFiles…”將圖片資源加入專案中。然後通過下面的程式碼才能正常獲取到圖片

UIImage *img=[UIImageimageNamed:@”1.jpg”]; 

否則如果單純拖拽如XCode裡面,執行的時候是看不了圖片的。

  • 網路
NSURL*url=[NSURLWrithString:@”http://www.baidu.com/img/bdlogo.png”];
UIImage *img=[[UIImage alloc]iniWithData:[NSData dataWithContentsOfURL:url]];
  • 本地檔案
NSString *path=[NSStringstringWithFormat:@”%@/Documents/%@.jpg”,NSHomeDirectory,@”test”];
UIImage *img=[[UIImage alloc]initWithContentsOfFile:path];

常用屬性

contentMode:圖片的顯示方式,它是一個列舉型別,

   UIViewContentModeScaleToFill,
   UIViewContentModeScaleAspectFit,
   UIViewContentModeScaleAspectFill,
   UIViewContentModeRedraw,
   UIViewContentModeCenter,
   UIViewContentModeTop,
   UIViewContentModeBottom,
   UIViewContentModeLeft,
   UIViewContentModeRight,
   UIViewContentModeTopLeft,
   UIViewContentModeTopRight,
   UIViewContentModeBottomLeft,
   UIViewContentModeBottomRight,

在以上列舉沒帶Scale的列舉值,都有一個共同點就是當圖片尺寸超出控制元件的大小時只會顯示圖片的一部分,超出的部分則不會顯示。而有三個列舉也要特別說一下

UIViewContentModeScaleToFill圖片會變形(圖片的寬高比變了),圖片全部會顯示在控制元件中;

UIViewContentModeScaleAspectFit:圖片的比例不變,儘可能地填充整個控制元件,以最短一邊去填充控制元件,沒填充的部分會有補白;

UIViewContentModeScaleAspectFill:圖片的比例不變,圖片會以最長邊去填充控制元件,會有一部分顯示不出來;

  • center:空間的中心點位置的屬性,可以通過設定這個值來改變控制元件的位置,此屬性是CGPoint型別,可以通過CGPointMake(CGFloat x,CGFloat y);來構造;
  • transform:賦上不同的值,圖片會在原有的基礎上作不同的變換
  • CGAffineTransformMakeTranslation(CGFloat dx,CGFloat dy);//向分別x,y軸的正方向移動dx,dy個畫素;
  • CGAffineTransformMakeRotation(CGFloat angle);//以控制元件的中心順時針旋轉的angle個弧度;
  • CGAffineTransformMakeScale(CGFloat scale_w,CGFloat scale_h);//按原本寬高分別縮放scale_w和scale_h倍;
  • highlightedImage:控制元件在高亮狀態時顯示的圖片;
  • highlighted:BOOL型別的屬性,控制控制元件是否在高亮狀態

UITextField

這是文字框,相對來說也是一個簡單的控制元件,比UILabel稍複雜一點。

  • text:NSString型別,文字框內的文字內容;
  • placeholder:NSString型別,文字框無內容時會顯示在文字框裡面的內容;
  • secureTextEntry:BOOL型別,文字框內容是否以密碼形式顯示;
  • returnKeyType:彈出的軟鍵盤中,Enter鍵的地方顯示的鍵的型別,分別有下面的型別;
   UIReturnKeyDefault,
   UIReturnKeyGo,
   UIReturnKeyGoogle,
   UIReturnKeyJoin,
   UIReturnKeyNext,
   UIReturnKeyRoute,
   UIReturnKeySearch,
   UIReturnKeySend,
   UIReturnKeyYahoo,
   UIReturnKeyDone,
   UIReturnKeyEmergencyCall,
  • keyboardType:彈出的軟鍵盤的型別,一共有下面這些型別
   UIKeyboardTypeDefault,
   UIKeyboardTypeASCIICapable,
   UIKeyboardTypeNumbersAndPunctuation,
   UIKeyboardTypeURL,
   UIKeyboardTypeNumberPad,
   UIKeyboardTypePhonePad,
   UIKeyboardTypeNamePhonePad,
   UIKeyboardTypeEmailAddress,
   UIKeyboardTypeDecimalPad,
   UIKeyboardTypeTwitter,
   UIKeyboardTypeWebSearch,
   UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable;
  • clearButtonMode:文字框中顯示清除內容的那個叉叉的顯示時機

就是圖中紅框的地方,這個列舉有以下這些值

   UITextFieldViewModeNever,
   UITextFieldViewModeWhileEditing,
   UITextFieldViewModeUnlessEditing,
   UITextFieldViewModeAlways

方法

如果文字框在編輯狀態,軟鍵盤則會彈出來,如果要收起軟鍵盤,則可以呼叫下面這個方法

[txtBox resignFirstResponder];

事件

對於文字框,編輯前或編輯後都可以觸發不同的事件進行操作,也可以在值發生變化時觸發事件,下面則列舉出來

TextDidBeginEditing;//開始編輯時觸發
TextDidEndEditing;//結束編輯時觸發
TextDidChange//內容改變時觸發

轉載於:https://www.cnblogs.com/HopeGi/p/4264513.html

相關文章