一.UIView屬性
設置視圖的透明度.默認為1.
//完全透明
view.alpha=0;
//不透明
view.alpha=1;
//默認是NO,當設置為yes時,超出當前視圖的尺寸的內容和子視圖不會顯示。
view.clipsToBounds=YES;
//默認是NO,當設置為yes,視圖就看不見了。
view.hidden=YES;
//默認為YES,如果設置為No,view就不能和用戶交互了。(即不能響應事件)
view.userInteractionEnabled=NO;
5. tag
//默認為0,用來標記視圖的
view.tag=0;
默認為No
exclusiveTouch的意義在于:如果當前設置了exclusiveTouch的UIView是整個觸摸事件的第一響應者,那么到你所有的手指離開屏幕前其他的UIView是無法接受到整個事件周期內所有的觸摸事件。
1> 表示控件的位置和尺寸(以父控件的左上角為坐標原點(0,0))
2> 修改這個屬性,可以調整控件的位置和尺寸
1> 表示控件的中點(以父控件的左上角為坐標原點)
2> 修改這個屬性,可以調整控件的位置
1> 表示控件的位置和尺寸(以自己的左上角位坐標原點,位置永遠是(0,0))
2> 修改這個屬性,只能調整控件的尺寸
1> 表示控件的形變狀態(旋轉角度、縮放比例)
2> 創建CGAffineTransform的函數
*CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
創建一個x、y方向的縮放比例分別為sx、sy的形變值
*CGAffineTransformMakeRotation(CGFloat angle)
創建一個旋轉角度為angle的形變值
*CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)
在形變值t的基礎上,再進行縮放,x、y方向的縮放比例分別為sx、sy,然后返回一個新的形變值
*CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)
在形變值t的基礎上,再進行旋轉,旋轉角度為angle,然后返回一個新的形變值
返回當前視圖的父視圖。(只讀)
返回當前視圖的窗口。(窗口)
獲取根視圖的superview和window時,需要注意,在viewdidload中是獲取不到的,viewdidload只是視圖加載完成,并沒有添加到窗口中,因此需要在viewDidAppear方法中才能獲取到。那時候視圖才被添加到窗口中。
- (void)viewDidLoad
{
[superviewDidLoad];
NSLog(@"%@",self.view.superview); // 沒有值
NSLog(@"%@",self.view.window); // 沒有值
}
- (void)viewDidAppear:(BOOL)animated
{
NSLog(@"%@",self.view.superview); // 有值
NSLog(@"%@",self.view.window);? // 有值
}
默認為YES,表示當父視圖尺寸改變時,子視圖也會隨著改變。
默認為UIViewAutoresizingNone,不會自動伸縮。
設置內容模式。
UIViewContentModeScaleToFill ?不按照原寬高比例(長和寬不等比例增長)以任意比例填充。這樣視圖不會有空白,且內容可以全部顯示。
UIViewContentModeAspectToFill ?按照原長寬比例填充,不完全顯示全部內容。這樣內容可能溢出,但整個視圖不會留有空白。
UIViewContentModeAspectToFit ? 按照原長寬比例(長和寬等比例增長),完全顯示全部內容。這樣容易照成左右或者上下留有空白。
默認是nil。
//設置背景顏色為紅色
self.view.backgroundColor= [UIColorredColor];
1.//加一個視圖到一個視圖里面
2.addSubview:
3.//將一個視圖移到前面
4.bringSubviewToFront:
5.//將一個視圖推送到背后
6.sendSubviewToBack:
7.//把視圖移除
8.removeFromSuperview
9.//插入視圖并指定索引
10.insertSubview:atIndex:
11.//插入視圖在某個視圖之上
12.insertSubview:aboveSubview:
13.//插入視圖在某個視圖之下
14.insertSubview:belowSubview:
15.//交換兩個位置索引的視圖
16.exchangeSubviewAtIndex:withSubviewAtIndex:
二.UITextView
1.???????????text:?設置textView中文本
_textView.text=@"Now is the time for all good developers to come toserve their country.\n\nNow is the time for all good developers to come toserve their country.";//設置它顯示的內容
2.???????????font:設置textView中文字的字體
_textView.font= [UIFontfontWithName:@"Arial"size:18.0];//設置字體名字和字體大小
3.???????????textColor:設置textView中文本的顏色
_textView.textColor= [UIColorblackColor];//設置textview里面的字體顏色
4.???????????textAlignment:設置textView的文本的排列方式
_textView.textAlignment=NSTextAlignmentCenter;// textView中的文本排列,默認靠左
5.???????????backgroundColor:設置textView的背景顏色
_textView.backgroundColor= [UIColorgrayColor];//設置淺灰色的背景色,默認為白色
_textView.delegate=self;//設置代理
7.???????????editable:設置textView是否可被輸入
_textView.editable=NO;// textView是否可被輸入,默認為YES
8.???????????attributedText:設置默認插入textView的文字
_textView.attributedText= [[NSAttributedStringalloc]initWithString:@"attributedText__-abc"];//可以方便將文本插入到UITextView中。
9.???????????inputView:設置從底部彈出的視圖
_textView.inputView= [[UIDatePickeralloc]init];//彈出視圖,默認為鍵盤
10.???inputAccessoryView:設置彈出視圖上方的輔助視圖
_textView.inputAccessoryView= [UIButtonbuttonWithType:UIButtonTypeDetailDisclosure];//彈出視圖上方的輔助視圖
11.???clearsOnInsertion:設置textView獲得焦點,在用戶使用虛擬鍵盤進行輸入時,清除之前的文本
_textView.clearsOnInsertion=YES;//clearsOnInsertion,默認為NO
iOS代碼
NSString?*text?=?@"first";
NSMutableAttributedString?*textLabelStr?=?[[NSMutableAttributedString?alloc]?initWithString:text];
[textLabelStr?setAttributes:@{NSForegroundColorAttributeName?:?[UIColor?lightGrayColor],
NSFontAttributeName?:?[UIFont?systemFontOfSize:17]}?range:NSMakeRange(11,10)];
label.attributedText?=?textLabelStr;
默認是系統自帶字體,大小為17。
Ios代碼
label.font= [UIFontsystemFontOfSize:17]
label.font?=?[UIFont?fontWithName:@"Arial"size:16];
Ios代碼
label.textColor?=?[UIColor?blueColor];
Ios代碼
label.textAlignment?=?NSTextAlignmentCenter;
5.lineBreakMode:設置標簽文字過長時的顯示方式,這個屬性使用于label中文本的換行和截短。首先numberofLines必須設置為0,才有效果。
Ios代碼
label.lineBreakMode?=?NSLineBreakByCharWrapping;以字符為顯示單位顯示,后面部分省略不顯示。
label.lineBreakMode?=?NSLineBreakByClipping;剪切與文本寬度相同的內容長度,后半部分被刪除。
label.lineBreakMode?=?NSLineBreakByTruncatingHead;前面部分文字以……方式省略,顯示尾部文字內容。
label.lineBreakMode?=?NSLineBreakByTruncatingMiddle;中間的內容以……方式省略,顯示頭尾的文字內容。
label.lineBreakMode?=?NSLineBreakByTruncatingTail;結尾部分的內容以……方式省略,顯示頭的文字內容。
label.lineBreakMode?=?NSLineBreakByWordWrapping;以單詞為顯示單位顯示,后面部分省略不顯示。
比如:
label.numberOfLines=0
label.lineBreakMode=NSLineBreakByTruncatingMiddle;
實現效果:
6.enabled:設置文字內容是否可變。
7.adjustsFontSizeToFitWidth:文字內容自適應標簽寬度。
8.adjustsLetterSpacingToFitWidth:根據字母的間隔自適應標簽寬度,超出部分以……顯示。
10.minimumScaleFactor:設置最小字體,與minimumFontSize相同,minimumFontSize在IOS 6后不能使用。
11.highlightedTextColor:設置文本高亮顯示顏色,與highlighted一起使用。
13.shadowColor:設置文本陰影與原文本的偏移量。label.shadowOffset= CGSizeMake(1.0, 5.0);
14.userInteractionEnabled:設置標簽是否忽略或移除用戶交互。默認為NO。
15.preferredMaxLayoutWidth:優先選擇標簽布局的最大寬度。
16.baselineAdjustment:如果adjustsFontSizeToFitWidth屬性設置為YES,這個屬性就來控制文本基線的行為。
Ios代碼
label4.baselineAdjustment?=?UIBaselineAdjustmentNone;
UIBaselineAdjustmentAlignBaselines=0,默認,文本最上端與中線對齊。
UIBaselineAdjustmentAlignCenters,???文本中線與label中線對齊。
UIBaselineAdjustmentNone,??文本最低端與label中線對齊。
ios代碼:清空背景顏色 label1.backgroundColor= [UIColor clearColor];
UIControlStateNormal????????? //正常狀態
UIControlStateHighlighted???? //高亮狀態
UIControlStateDisabled??????? //禁用狀態
UIControlStateSelected??????? //選中狀態
UIControlStateApplication???? //
UIControlStateReserved ???????//保留狀態
UIButtonTypeCustom ???????????//自定義類型
添加圖片:灰色背景顏色:
UIButtonTypeRoundedRect?????? //圓角類型
UIButtonTypeDetailDisclosure?? //細節展示按鈕
UIButtonTypeInfoLight????????? //淺色背景的信息按鈕
UIButtonTypeInfoDark?????????? //暗色背景的信息按鈕
UIButtonTypeContactAdd???????? //添加按鈕
給按鈕設置文字時,蘋果文檔說明,不能使用label對象設置文字的顏色或者陰影顏色,相反必須使用setTitleColor:forState:andsetTitleShadowColor:forState:這兩個方法才能修改這些值。
設置按鈕中其他屬性依次類推。。。。
//設置對應狀態的標題內容default is nil. title is assumed to besingle line
- (void)setTitle:(NSString*)title forState:(UIControlState)state;
//設置對應狀態的標題顏色
- (void)setTitleColor:(UIColor*)color forState:(UIControlState)state;
//設置對應狀態的標題陰影顏色
- (void)setTitleShadowColor:(UIColor*)color forState:(UIControlState)state;
//設置對應狀態的按鈕的圖片
- (void)setImage:(UIImage*)image forState:(UIControlState)state;
//設置對應狀態的按鈕背景圖片
- (void)setBackgroundImage:(UIImage*)image forState:(UIControlState)state;
添加事件
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
這些事件都是基于觸摸、基于值、基于編輯。有如下事件會觸發。
在點擊按鈕是按鈕是凹下去,然后彈起才觸發起事件,按鈕的狀態有:
1.UIControlEventTouchDown//按下
2.
3.UIControlEventTouchDownRepeat多次按下
4.UIControlEventTouchUpInside//在按鈕及其一定外圍內松開
5.
6.UIControlEventTouchUpOutside//按鈕外面松開
當按鈕禁用的情況下,圖像的顏色會被畫深一點,默認為YES。
當按鈕高亮的情況下,圖像的顏色會被畫深一點,默認為YES。
button.showsTouchWhenHighlighted=YES;點擊時的閃光效果會被前景圖片遮住中間部分;
設置按鈕的內部內容(包含按鈕圖片和標題)離按鈕邊緣上下左右的距離。
1.有些時候我們想讓UIButton的title居左對齊,我們設置
btn.textLabel.textAlignment= UITextAlignmentLeft
是沒有作用的,我們需要設置
btn.contentHorizontalAlignment = UIControlContentHorizonAlignmentLeft;
但是問題又出來,此時文字會緊貼到左邊框,我們可以設置
btn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0);
使文字距離左邊框保持10個像素的距離。
1.UIControlEventTouchDown
單點觸摸按下事件:用戶點觸屏幕,或者又有新手指落下的時候。
2.UIControlEventTouchDownRepeat
多點觸摸按下事件,點觸計數大于1:用戶按下第二、三、或第四根手指的時候。
3.UIControlEventTouchDragInside
當一次觸摸在控件窗口內拖動時。
4.UIControlEventTouchDragOutside
當一次觸摸在控件窗口之外拖動時。
5.UIControlEventTouchDragEnter
當一次觸摸從控件窗口之外拖動到內部時。
6.UIControlEventTouchDragExit
當一次觸摸從控件窗口內部拖動到外部時。
7.UIControlEventTouchUpInside
所有在控件之內觸摸抬起事件。
8.UIControlEventTouchUpOutside
所有在控件之外觸摸抬起事件(點觸必須開始與控件內部才會發送通知)。
9.UIControlEventTouchCancel
所有觸摸取消事件,即一次觸摸因為放上了太多手指而被取消,或者被上鎖或者電話呼叫打斷。
10.UIControlEventTouchChanged
當控件的值發生改變時,發送通知。用于滑塊、分段控件、以及其他取值的控件。你可以配置滑塊控件何時發送通知,在滑塊被放下時發送,或者在被拖動時發送。
11.UIControlEventEditingDidBegin
當文本控件中開始編輯時發送通知。
12.UIControlEventEditingChanged
當文本控件中的文本被改變時發送通知。
13.UIControlEventEditingDidEnd
當文本控件中編輯結束時發送通知。
14.UIControlEventEditingDidOnExit
當文本控件內通過按下回車鍵(或等價行為)結束編輯時,發送通知。
15.UIControlEventAlltouchEvents
通知所有觸摸事件。
16.UIControlEventAllEditingEvents
通知所有關于文本編輯的事件。
17.UIControlEventAllEvents
通知所有事件
獲取或設置UIAlertView上的標題。
獲取或設置UIAlertView上的消息
UIAlertView*alertView = [[UIAlertViewalloc]initWithTitle:@"Title"message:@"message"delegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil];
alertView.title=@"T";
alertView.message=@"M";
[alertViewshow];
返回UIAlertView上有多少按鈕.
UIAlertView*alertView = [[UIAlertViewalloc]initWithTitle:@"Title"message:@"message"delegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil];
NSLog(@"%d",alertView.numberOfButtons);
[alertViewshow];
UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"提示"
message:@"請選擇一個按鈕:"
delegate:nil
cancelButtonTitle:@"取消"
otherButtonTitles:@"按鈕一",@"按鈕二",@"按鈕三",nil];
[alertshow];
NSLog(@"UIAlertView中取消按鈕的角標是%d",alert.cancelButtonIndex);
效果:
注意不要認為取消按鈕的角標是4,“取消”,“按鈕一”,“按鈕二”,“按鈕三”的索引buttonIndex分別是0,1,2,3
5.1 UIAlertViewStyleLoginAndPasswordInput
UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"產品信息展示"message:p.namedelegate:nilcancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil];
alert.alertViewStyle=UIAlertViewStyleLoginAndPasswordInput;
//彈出UIAlertView
[alertshow];
5.2 UIAlertViewStylePlainTextInput
UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"產品信息展示"message:p.namedelegate:nilcancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil];
alert.alertViewStyle=UIAlertViewStylePlainTextInput;
//彈出UIAlertView
[alertshow];
5.3UIAlertViewStyleSecureTextInput
UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"產品信息展示"message:p.namedelegate:nilcancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil];
alert.alertViewStyle=UIAlertViewStyleSecureTextInput;
//彈出UIAlertView
[alertshow];
6. - (UITextField *)textFieldAtIndex:(NSInteger)textFieldIndex
返回textFieldIndex角標對應的文本框。
取出文本框文字
[alert dismissWithClickedButtonIndex:0?animated:YES];
作為UIAlertView的代理,必須遵守UIAlertViewDelegate。
1.當點擊UIAlertView上的按鈕時,就會調用,并且當方法調完后,UIAlertView會自動消失。
- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
- (void)willPresentAlertView:(UIAlertView*)alertView;
- (void)didPresentAlertView:(UIAlertView*)alertView;
- (void)alertView:(UIAlertView*)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex;
- (void)alertView:(UIAlertView*)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;
9.注意UIAlertView調用show顯示出來的時候,系統會自動強引用它,不會被釋放。
在為UIAlertView對象太添加子視圖的過程中,有點是需要注意的地方,如果刪除按鈕,也就是取消UIAlerView視圖中所有的按鈕的時候,可能會導致整個顯示結構失衡。按鈕占用的空間不會消失,我們也可以理解為這些按鈕沒有真正的刪除,僅僅是他不可見了而已。如果在UIAlertview對象中僅僅用來顯示文本,那么,可以在消息的開頭添加換行符(@"\n)有助于平衡按鈕底部和頂部的空間。
下面的代碼用來演示如何為UIAlertview對象添加子視圖的方法。
UIAlertView*alert =[[UIAlertView?alloc]initWithTitle:@"請等待"
message:nil
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:nil];
[alert?show];
UIActivityIndicatorView*activeView =[[UIActivityIndicatorView?alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activeView.center?=?CGPointMake(alert.bounds.size.width/ 2.0f, alert.bounds.size.height - 40.0f);
[activeView?startAnimating];
[alert?addSubview:activeView];
UIAlertView默認情況下所有的text是居中對齊的。 那如果需要將文本向左對齊或者添加其他控件比如輸入框時該怎么辦呢?不用擔心, iPhone SDK還是很靈活的,有很多delegate消息供調用程序使用。所要做的就是在
- (void)willPresentAlertView:(UIAlertView *)alertView
中按照自己的需要修改或添加即可,比如需要將消息文本左對齊,下面的代碼即可實現:
-(void) willPresentAlertView:(UIAlertView?*)alertView
{
for(?UIView?*?view?in?alertView.subviews?)
{
if([view?isKindOfClass:[UILabel?class]] )
{
UILabel*label = (UILabel*) view;
label.textAlignment=UITextAlignmentLeft;
}
}
}