11、UIView與常用組件(一)

通俗點講,看得見、摸得著的就是UIView。貼上UIKit 和 UIView 的關(guān)系圖:

UIKit關(guān)系圖.png
UIView關(guān)系圖.png

UI組件使用

  • UIView
  • UIButton UIControl
  • UIImageView UILabel
  • UIAlertView UIActionSheet
  • UITextField UITextView
  • UIProgressView
  • UISwitch UISlider UISegmentedControl
  • UIScrollView
  • UIPageView
  • UIWebView
  • UIBarButtonItem
  • UIToolBar
  • UIActivityIndicatorView
  • UITableView

UIButton:

UIButton *pushButton = [UIButton buttonWithType:UIButtonTypeCustom];

如果你不想使用類方法創(chuàng)建也是可以的:

pushButton = [[UIButton alloc] init];

在設(shè)置 UIButton 組件的背景色時, 會經(jīng)常設(shè)置 clearColor 這個顏色。


有時,我們在為 button 設(shè)置背景圖片的時候,會因為圖片大小的關(guān)系,導致出來的效果失真、不協(xié)調(diào)。解決方法一是讓UI設(shè)計師制作一個大小合規(guī)的圖片,另一種方法就是手動代碼對圖片進行拉伸:

UIImage *blueBGImage = [UIImage imageNamed:@"blueButton.png"];
UIImage *stretchableBlueBGImage = [blueBGImage stretchableImageWithLeftCapWidth:10 topCapHeight:20];

當使用 stretchableImageWithLeftCapWidth: topCapHeight: 方法進行拉伸的時候,它拉伸圖片的直線部分,因此不會造成圖片的失真(失真的效果就是本來圖片時一個四角圓潤的長方體,拉伸之后成為了橢圓形狀)。方法的意思是分別從圖片左上角往右和往下 ?points(同樣會映射到圖片從右往左,從下往上的部分,能保證圖片四角都照顧到) 進行拉伸,只要確保輸入的數(shù)字是在直線段,拉伸的效果就不會失真了。(主要是這個方法可以保證圖片的四個角不會變化)注意,這個方法最后會生成一個新的圖片,使用時注意選擇。`

[pushButton SetBackgroundImage:stretchableBlueBGImage
                      forState:UIControlStateNormal];

當你希望在點擊一個button之后,上面的title會發(fā)生變化,變成另外的文字,可以這樣設(shè)置:

[presentButton setTitle:@"present modal view" forState:UIControlStateNormal];
[presentButton serTitle:@"clicked!" forState:UIControlStateHighlighted];

??上面兩行代碼,表示button在沒有點擊的時候,顯示的title是present modal view,在點擊之后沒松開按鈕的情況下title顯示的是clicked!.


看下面一段代碼:

[pushButton addTarget:self
               action:@selector(pushButtonClicked:)
     forControlEvents:UIControlEventTouchUpInside];

其中 addTarget: 參數(shù)代表執(zhí)行的是誰。action:參數(shù)代表執(zhí)行的是什么方法。至于為什么要在 pushButtonClicked 后面加冒號,是因為一般在這個方法名中都帶有參數(shù),所以都要加冒號(而參數(shù)一般就是本身)。一般我們會使用 UIControlEventTouchUpInside 這個點擊事件,它是點擊之后松開才會觸發(fā)事件響應,這樣會給誤操作的用戶一個修正的機會。直接按下就執(zhí)行的方法是touchDown.
??看下面的一段代碼:
設(shè)置宏可以保證代碼的可讀性(寫在代碼前面),即下面代碼前兩行。

#define kPushButtonTag          101
#define kPresentButtonTag       102

pushButton.tag = 100;
presentButton.tag = 200;

- (void)pushButtonClicked:(id)sender
{
    if (sender.tag == kPresentButtonTag) {

    } else if (sender.tag == kPushButtonTag) {

    }
}

- (void)presentButtonClicked:(id)sender
{

}

現(xiàn)在我們來介紹一下方法中帶參數(shù)的作用??瓷厦娴囊欢未a,有兩個 selector 的方法,假設(shè)一種情況 :selector 的方法都指向一個同樣的方法名例如 pushButtonClicked: 。如果需要做判斷,就可以根據(jù)傳入的button參數(shù)來判斷。那么我們可以通過參數(shù)來獲得各個button在提前設(shè)置的tag值來作出判斷,選擇使用哪一個方法。還存在一種情況,當代碼太多的時候,我們找不到tag值,這時我們可以預先定義一個宏,如上面代碼的第一和第二行的內(nèi)容,這樣代碼就更具有可讀性(宏名前帶k表示常量,這只是一種習慣 ,還有的程序員習慣宏名全部大寫,我們注重代碼可讀性簡潔即可)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,013評論 25 709
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,327評論 0 17
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,258評論 4 61
  • 午夜挑燈如寒窗,讀來讀去著華章。功名何須不朽夜,裁剪快樂做衣裳。圖片發(fā)自簡書App
    昊水長天閱讀 227評論 0 4
  • 當你在跟一個人聊天,而對方?jīng)]有很好的回應你,你通常是什么反應。 是不是這樣: 你有沒有在聽我說話?(平靜地) 你能...
    余無忌閱讀 1,944評論 4 17

友情鏈接更多精彩內(nèi)容