若干搭建UI常用的小控件(一)

現(xiàn)下大部分的UI設(shè)計(jì)都是以TableView為主,但仍需要用一些控件來(lái)優(yōu)化結(jié)構(gòu),增加功能。本文為大家介紹一些常用的控件和常見的基本用法。


相關(guān)文章:

TextField相關(guān)基礎(chǔ)用法
若干搭建UI常用的小控件(二)


UISwitch

UISwitch是比較常用的控件,在設(shè)置界面應(yīng)用較多。通常情況下定制較少,大部分定制的情況都是在定制顏色上面。

UISwitch * switch = [[UISwitch alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
//寬和高無(wú)用,注意center
//如果確實(shí)想要更改大小,可以通過繼承于UIView來(lái)修改transform
設(shè)置開關(guān)的顏色
switch.onTintColor = [UIColor redColor];//打開狀態(tài)下的顏色
switch.tintColor = [UIColor blackColor];//關(guān)閉狀態(tài)下的鏤空色
switch.thumbTintColor = [UIColor yellowColor]; //滑塊顏色
設(shè)置當(dāng)前開關(guān)的狀態(tài)
switch.on = YES;
[switch addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];

對(duì)控件添加時(shí)間,繼承自UIControl的控件都能通過添事件變成Trigger

- (void)setOn:(BOOL)on animated:(BOOL)animated;//帶動(dòng)畫效果的開關(guān),需要被某個(gè)觸發(fā)器觸發(fā)

UIActionSheet

這也是個(gè)十分常用的控件,默認(rèn)是不會(huì)顯示的,只有被觸發(fā)之后,才會(huì)顯示。常用于完成任務(wù)的不同方法,無(wú)需定制。
協(xié)議為UIActionSheetDelegate,在使用之前需要添加。、

初始化
UIActionSheet * actionSheet = [[UIActionSheet alloc]        
                               initWithTitle:@"分享"
                                    delegate:self 
                           cancelButtonTitle:@"取消"       
                      destructiveButtonTitle:nil 
                           otherButtonTitles:@"微博", @"微信好友", @"朋友圈", nil];
風(fēng)格樣式
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
UIActionSheetStyleAutomatic          //白色
UIActionSheetStyleDefault            //白色
UIActionSheetStyleBlackTranslucent   //黑色透明
UIActionSheetStyleBlackOpaque        //黑色不透明
顯示風(fēng)格
- (void)showFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated;
//可定制顯示風(fēng)格
- (void)showInView:(UIView *)view; 
//默認(rèn)顯示風(fēng)格
協(xié)議方法
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
//獲取點(diǎn)擊事件的位置,執(zhí)行其他操作
 {
    switch (buttonIndex) {
        case 0: {

        break;
        }
        case 1: {

            break;
        }
        default:
            break;
    }
}
- (void)actionSheetCancel:(UIActionSheet *)actionSheet
//執(zhí)行關(guān)閉操作

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
//即將顯示,在動(dòng)畫之前

- (void)didPresentActionSheet:(UIActionSheet *)actionSheet
//即將顯示,在動(dòng)畫之后

- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex
// 將要關(guān)閉, 點(diǎn)擊了buttonIndex

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
//已經(jīng)關(guān)閉, 點(diǎn)擊了buttonIndex]);

UIAlertView

UIAlertView常用語(yǔ)輸入密碼、警告等場(chǎng)景,也是需要觸發(fā)之后才會(huì)顯現(xiàn)出來(lái)的一個(gè)控件(類似UIActionSheet),這是一個(gè)不需要定制的控件,如需定制,可以自建UIView進(jìn)行定制。
協(xié)議為UIAlertViewDelegate

初始化
UIAlertView * alertView = [[UIAlertView alloc] 
                          initWithTitle:@"警告" 
                                message:@"message" 
                               delegate:self 
                      cancelButtonTitle:@"放棄" 
                       otherButtonTitles:@"1", @"2", @"3", nil];
//alertView不需要添加到父視圖,系統(tǒng)直接將其添加到window上,以上每個(gè)參數(shù),如不需要,都可以傳nil
//Title是標(biāo)題,顯示警告的主體內(nèi)容。
//message是警告的具體信息,用以描述警告的內(nèi)容。
//cancelButtonTitle是取消鍵的title
//otherButtonTitles是其他鍵的title,可以賦值為nil
顯示風(fēng)格
alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
UIAlertViewStyleDefault                    //默認(rèn)
UIAlertViewStyleSecureTextInput            //密文textField
UIAlertViewStylePlainTextInput             //平鋪textFiled
UIAlertViewStyleLoginAndPasswordInput      //用戶名密碼
顯示
[alertView show];//觸發(fā)顯示UIAlertView之后,需要執(zhí)行這段代碼,如沒有,則不顯示
協(xié)議方法
- (void)alertViewCancel:(UIAlertView *)alertView//被取消之后執(zhí)行
- (void)willPresentAlertView:(UIAlertView *)alertView//即將顯示,在動(dòng)畫之前
- (void)didPresentAlertView:(UIAlertView *)alertView//已經(jīng)顯示,在動(dòng)畫之后
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
//取消鍵0,其他鍵從1開始,即將消失,動(dòng)畫之前,點(diǎn)擊了buttonIndex號(hào)按鈕
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
//已經(jīng)消失,動(dòng)畫之后,點(diǎn)擊了buttonIndex號(hào)按鈕
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
//第一個(gè)其他按鈕是否有效,當(dāng)textField上文字發(fā)生改變
{
    //獲取alertView上的textField
       UITextField * textField = [alertView textFieldAtIndex:1];
    //比如輸入用戶名密碼,可以判斷如果密碼不夠6位,用戶名不夠6位,不許登陸
      if (tf.text.length != 6)
          return NO;
      return YES;
}

很多的APP開發(fā)過程當(dāng)中,經(jīng)常是應(yīng)該使用UIAlertView來(lái)代替UIActionSheet的功能來(lái)使用,雖然說功能是現(xiàn)實(shí)方面并不會(huì)出現(xiàn)巨大的問題,但是事實(shí)上這種使用方法確實(shí)不值得提倡的。如此會(huì)造成用戶的使用疲勞,使用戶的使用感受大打折扣。

UIAlertView 作為一個(gè)占據(jù)屏幕中央的臨時(shí)模態(tài)層,會(huì)嚴(yán)重打斷用戶的當(dāng)前任務(wù)與操作,吸引用戶所有注意力。因此,Apple 官方也嚴(yán)肅地建議:盡量避免使用。


UITextView

UITextView繼承于UIScrollView,UIScrollView是UIView的子類,所以,UITextView繼承以上的一些方法。
協(xié)議為UITextViewDelegate

textView 是滾動(dòng)視圖的子類,滾動(dòng)視圖,如果檢測(cè)到當(dāng)前視圖控制器在導(dǎo)航控制器下,會(huì)自動(dòng)留出導(dǎo)航控制器的高度。因?yàn)閟crollView很多時(shí)候是全屏顯示的。
修復(fù)方法如下:
self.automaticallyAdjustsScrollViewInsets = NO;

//創(chuàng)建
UITextView * textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 70, 300, 200)];
textView.backgroundColor = [UIColor orangeColor];

//設(shè)置字體
textView.font = [UIFont systemFontOfSize:30];

//設(shè)置字體顏色
textView.textColor = [UIColor blueColor];

//設(shè)置字體的對(duì)齊方式
textView.textAlignment = NSTextAlignmentLeft;

//設(shè)置能否滾動(dòng)
textView.scrollEnabled = NO;

//設(shè)置鍵盤色彩
textView.keyboardAppearance = UIKeyboardAppearanceAlert;
UIKeyboardAppearanceDark   //黑色
UIKeyboardAppearanceLight  //白色
UIKeyboardAppearanceAlert = UIKeyboardAppearanceDark

//設(shè)置鍵盤樣式
textView.keyboardType = UIKeyboardTypeDefault;//默認(rèn)樣式

//設(shè)置鍵盤的return鍵,僅在鍵盤樣式default生效
textView.returnKeyType = UIReturnKeyDefault;//默認(rèn)樣式

//設(shè)置是否自動(dòng)大小寫
textView.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

//設(shè)置是否自動(dòng)糾錯(cuò)
textView.autocorrectionType = UITextAutocorrectionTypeNo;
 UITextAutocorrectionTypeDefault   //默認(rèn)
 UITextAutocorrectionTypeNo        //不自動(dòng)糾錯(cuò)
 UITextAutocorrectionTypeYes       //自動(dòng)糾錯(cuò)

//設(shè)置彈出自定義鍵盤
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 100)];
view.backgroundColor = [UIColor greenColor];
textView.inputView = view;

//設(shè)置自定義二級(jí)鍵盤
textView.inputAccessoryView = nil;
textView.inputView = nil;

//設(shè)置禁止編輯
textView.editable = YES;

//設(shè)置默認(rèn)文字
textView.text = @"默認(rèn)文字";

//設(shè)置不能進(jìn)行任何操作
textView.userInteractionEnabled = NO;

關(guān)于鍵盤的設(shè)置,我會(huì)在另一篇中寫出。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,682評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,435評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,665評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,838評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,379評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,627評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容