1. 程式人生 > 程式設計 >iOS中各種UI控制元件屬性設定示例程式碼

iOS中各種UI控制元件屬性設定示例程式碼

//檢視已經載入完了,可以進行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,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控制元件屬性設定內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!