您好,登錄后才能下訂單哦!
//視圖已經加載完了,可以進行ui的添加了 - (void)viewDidLoad { [superviewDidLoad]; // Do any additional setup after loading the view. //初始化UILabel注意指定該對象的位置及大小 UILabel *lb = [[UILabelalloc]initWithFrame:CGRectMake(0,20,300,200)]; //設置文字 lb.text =@"label測試我在學習中學些ui story水電費水電費未入圍 i肉煨入味哦水電費水電費水電費"; //設置背景色 lb.backgroundColor = [UIColorcolorWithRed:0green:191.0/255.0blue:243.0/255.0alpha:1.0]; //設置文字顏色 lb.textColor = [UIColorwhiteColor]; //文字大小,文字字體 lb.font = [UIFontsystemFontOfSize:25]; NSLog(@"系統字體名字:%@",lb.font.familyName); //打印文字字體列表 NSArray *arrFonts = [UIFontfamilyNames]; NSLog(@"系統字體列表:%@",arrFonts); //文字對齊 lb.textAlignment =NSTextAlignmentJustified; // NSTextAlignmentLeft = 0, //居左對齊,默認 // NSTextAlignmentCenter = 1, //居中對齊 // NSTextAlignmentRight = 2, //居右對齊 // NSTextAlignmentJustified = 3, // Fully-justified. The last line in a paragraph is natural-aligned. // NSTextAlignmentNatural = 4, // Indicates the default alignment for script //換行模式 lb.lineBreakMode =NSLineBreakByCharWrapping; // NSLineBreakByWordWrapping = 0, //每一行的結尾以字或者一個完整單詞換行(若不夠一個單詞的位置) // NSLineBreakByCharWrapping,//在每一行的結尾以字母進行換行 // NSLineBreakByClipping,// Simply clip // NSLineBreakByTruncatingHead,// Truncate at head of line: "...wxyz" // NSLineBreakByTruncatingTail,// Truncate at tail of line: "abcd..." // NSLineBreakByTruncatingMiddle// Truncate middle of line: "ab...yz" //指定行數,0為不限制行樹,可以指定具體的數字 lb.numberOfLines =0; //加圓角 lb.layer.cornerRadius =30; //此行必須加,將原來的矩形角剪掉 lb.clipsToBounds =YES; //加邊框顏色,寬度,注意給layer加的顏色是CGColor類型 lb.layer.borderColor = [[UIColorredColor]CGColor]; lb.layer.borderWidth =1.0; //把label添加到視圖上,并且會顯示 [self.viewaddSubview:lb]; }
Label的首行縮進一直是個很頭疼的問題,現在IOS6只有有一個 attributedText的屬性值得我們深究,可以達到我們自定義的行高,還有首行縮進,各種行距和間隔問題。下面這個是兩個Label, 一個是UserName,另一個是Content文本多行信息
創建標簽
@interface ViewController : UIViewController @property ( weak , nonatomic ) IBOutlet UILabel *usernameLabel @property ( weak , nonatomic ) IBOutlet UILabel *contentLabel; @end
視圖展示層
- ( void )viewDidLoad { self . usernameLabel . text = @"用戶名Jordan CZ: " ; self . usernameLabel . adjustsFontSizeToFitWidth = YES ; [ self . usernameLabel sizeToFit ]; self . contentLabel . text = @"首行縮進根據用戶昵稱自動調整 間隔可自定根據需求隨意改變。。。。。。。" ; self . contentLabel . adjustsFontSizeToFitWidth = YES ; self . contentLabel . adjustsLetterSpacingToFitWidth = YES ; [ self resetContent ]; }
自適應計算間距
- ( void )resetContent{ NSMutableAttributedString *attributedString = [[ NSMutableAttributedString alloc ]initWithString : self . contentLabel . text ]; NSMutableParagraphStyle *paragraphStyle = [[ NSMutableParagraphStyle alloc ]init ]; paragraphStyle. alignment = NSTextAlignmentLeft ; paragraphStyle. maximumLineHeight = 60 ; //最大的行高 paragraphStyle. lineSpacing = 5 ; //行自定義行高度 [paragraphStyle setFirstLineHeadIndent : self . usernameLabel . frame . size .width + 5 ]; //首行縮進 根據用戶昵稱寬度在加5個像素 [attributedString addAttribute : NSParagraphStyleAttributeName value:paragraphStyle range : NSMakeRange ( 0 , [ self . contentLabel . text length ])]; self . contentLabel . attributedText = attributedString; [ self . contentLabel sizeToFit ]; }
UITextView的使用詳解
//初始化并定義大小 UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 30)]; textview.backgroundColor=[UIColor whiteColor]; //背景色 textview.scrollEnabled = NO; //當文字超過視圖的邊框時是否允許滑動,默認為“YES” textview.editable = YES; //是否允許編輯內容,默認為“YES” textview.delegate = self; //設置代理方法的實現類 textview.font=[UIFont fontWithName:@"Arial" size:18.0]; //設置字體名字和字體大小; textview.returnKeyType = UIReturnKeyDefault;//return鍵的類型 textview.keyboardType = UIKeyboardTypeDefault;//鍵盤類型 textview.textAlignment = NSTextAlignmentLeft; //文本顯示的位置默認為居左 textview.dataDetectorTypes = UIDataDetectorTypeAll; //顯示數據類型的連接模式(如電話號碼、網址、地址等) textview.textColor = [UIColor blackColor]; textview.text = @"UITextView詳解";//設置顯示的文本內容 [self.view addSubview:textview];
UITextView的代理方法如下:
//將要開始編輯 - (BOOL)textViewShouldBeginEditing:(UITextView *)textView; //將要結束編輯 - (BOOL)textViewShouldEndEditing:(UITextView *)textView; //開始編輯 - (void)textViewDidBeginEditing:(UITextView *)textView; //結束編輯 - (void)textViewDidEndEditing:(UITextView *)textView; //內容將要發生改變編輯 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text; //內容發生改變編輯 - (void)textViewDidChange:(UITextView *)textView; //焦點發生改變 - (void)textViewDidChangeSelection:(UITextView *)textView;
有時候我們要控件自適應輸入的文本的內容的高度,只要在textViewDidChange的代理方法中加入調整控件大小的代理即可
- (void)textViewDidChange:(UITextView *)textView{ //計算文本的高度 CGSize constraintSize; constraintSize.width = textView.frame.size.width-16; constraintSize.height = MAXFLOAT; CGSize sizeFrame =[textView.text sizeWithFont:textView.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; //重新調整textView的高度 textView.frame =CGRectMake(textView.frame.origin.x,textView.frame.origin.y,textView.frame.size.width,sizeFrame.height+5); }
控制輸入文字的長度和內容,可通調用以下代理方法實現
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text { if (range.location>=100) { //控制輸入文本的長度 return NO; } if ([text isEqualToString:@"\n"]) { //禁止輸入換行 return NO; } else { return YES; } }
UITextView退出鍵盤的幾種方式
因為iphone的軟鍵盤沒有自帶的退鍵盤鍵,所以要實現退出鍵盤需要自己實現,有如下幾種方式:
1)如果你程序是有導航條的,可以在導航條上面加多一個Done的按鈕,用來退出鍵盤,當然要先實UITextViewDelegate。
- (void)textViewDidBeginEditing:(UITextView *)textView { UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissKeyBoard)]; self.navigationItem.rightBarButtonItem = done; [done release]; done = nil; } - (void)textViewDidEndEditing:(UITextView *)textView { self.navigationItem.rightBarButtonItem = nil; } - (void)dismissKeyBoard { [self.textView resignFirstResponder]; }
2)如果你的textview里不用回車鍵,可以把回車鍵當做退出鍵盤的響應鍵。
代碼如下:
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text { if ([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; return NO; } return YES; }
3)還有你也可以自定義其他加載鍵盤上面用來退出,比如在彈出的鍵盤上面加一個view來放置退出鍵盤的Done按鈕。
代碼如下:
UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320,30)]; [topView setBarStyle:UIBarStyleBlack]; UIBarButtonItem *btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)]; NSArray * buttonsArray = @[btnSpace, doneButton];; [doneButton release]; [btnSpace release]; [topView setItems:buttonsArray]; [textView setInputAccessoryView:topView];//當文本輸入框加上topView [topView release]; topView = nil; -(IBAction)dismissKeyBoard { [tvTextView resignFirstResponder]; }
總結
到此這篇關于iOS中各種UI控件屬性設置的文章就介紹到這了,更多相關iOS各種UI控件屬性設置內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。