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

現(xiàn)下大部分的UI設(shè)計都是以TableView為主苞轿,但仍需要用一些控件來優(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)];
//寬和高無用负懦,注意center
//如果確實想要更改大小筒捺,可以通過繼承于UIView來修改transform
設(shè)置開關(guān)的顏色
switch.onTintColor = [UIColor redColor];//打開狀態(tài)下的顏色
switch.tintColor = [UIColor blackColor];//關(guān)閉狀態(tài)下的鏤空色
switch.thumbTintColor = [UIColor yellowColor]; //滑塊顏色
設(shè)置當前開關(guān)的狀態(tài)
switch.on = YES;
[switch addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];

對控件添加時間,繼承自UIControl的控件都能通過添事件變成Trigger

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

UIActionSheet

這也是個十分常用的控件系吭,默認是不會顯示的,只有被觸發(fā)之后颗品,才會顯示肯尺。常用于完成任務(wù)的不同方法,無需定制躯枢。
協(xié)議為UIActionSheetDelegate则吟,在使用之前需要添加。锄蹂、

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

        break;
        }
        case 1: {

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

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

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

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

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

UIAlertView

UIAlertView常用語輸入密碼敬扛、警告等場景,也是需要觸發(fā)之后才會顯現(xiàn)出來的一個控件(類似UIActionSheet)朝抖,這是一個不需要定制的控件舔哪,如需定制,可以自建UIView進行定制槽棍。
協(xié)議為UIAlertViewDelegate

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

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

UIAlertView 作為一個占據(jù)屏幕中央的臨時模態(tài)層,會嚴重打斷用戶的當前任務(wù)與操作魔市,吸引用戶所有注意力主届。因此,Apple 官方也嚴肅地建議:盡量避免使用待德。


UITextView

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

textView 是滾動視圖的子類,滾動視圖较坛,如果檢測到當前視圖控制器在導(dǎo)航控制器下印蔗,會自動留出導(dǎo)航控制器的高度。因為scrollView很多時候是全屏顯示的丑勤。
修復(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è)置字體的對齊方式
textView.textAlignment = NSTextAlignmentLeft;

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

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

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

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

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

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

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

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

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

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耙厚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子岔霸,更是在濱河造成了極大的恐慌薛躬,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呆细,死亡現(xiàn)場離奇詭異泛豪,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門诡曙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臀叙,“玉大人,你說我怎么就攤上這事价卤∪坝” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵慎璧,是天一觀的道長床嫌。 經(jīng)常有香客問我,道長胸私,這世上最難降的妖魔是什么厌处? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮岁疼,結(jié)果婚禮上阔涉,老公的妹妹穿的比我還像新娘。我一直安慰自己捷绒,他們只是感情好瑰排,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著暖侨,像睡著了一般椭住。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上字逗,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天京郑,我揣著相機與錄音,去河邊找鬼葫掉。 笑死傻挂,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的挖息。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼兽肤,長吁一口氣:“原來是場噩夢啊……” “哼套腹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起资铡,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤电禀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笤休,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尖飞,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了政基。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贞铣。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沮明,靈堂內(nèi)的尸體忽然破棺而出辕坝,到底是詐尸還是另有隱情,我是刑警寧澤荐健,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布酱畅,位于F島的核電站,受9級特大地震影響江场,放射性物質(zhì)發(fā)生泄漏纺酸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一址否、第九天 我趴在偏房一處隱蔽的房頂上張望餐蔬。 院中可真熱鬧,春花似錦在张、人聲如沸用含。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啄骇。三九已至,卻和暖如春瘟斜,著一層夾襖步出監(jiān)牢的瞬間缸夹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工螺句, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虽惭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓蛇尚,卻偏偏與公主長得像芽唇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子取劫,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

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