一.UIView屬性
設(shè)置視圖的透明度.默認(rèn)為1.
//完全透明
view.alpha=0;
//不透明
view.alpha=1;
//默認(rèn)是NO叫倍,當(dāng)設(shè)置為yes時,超出當(dāng)前視圖的尺寸的內(nèi)容和子視圖不會顯示也切。
view.clipsToBounds=YES;
//默認(rèn)是NO集歇,當(dāng)設(shè)置為yes拐叉,視圖就看不見了。
view.hidden=YES;
//默認(rèn)為YES,如果設(shè)置為No柠贤,view就不能和用戶交互了帮孔。(即不能響應(yīng)事件)
view.userInteractionEnabled=NO;
5. tag
//默認(rèn)為0雷滋,用來標(biāo)記視圖的
view.tag=0;
默認(rèn)為No
exclusiveTouch的意義在于:如果當(dāng)前設(shè)置了exclusiveTouch的UIView是整個觸摸事件的第一響應(yīng)者,那么到你所有的手指離開屏幕前其他的UIView是無法接受到整個事件周期內(nèi)所有的觸摸事件文兢。
1> 表示控件的位置和尺寸(以父控件的左上角為坐標(biāo)原點(diǎn)(0,0))
2> 修改這個屬性晤斩,可以調(diào)整控件的位置和尺寸
1> 表示控件的中點(diǎn)(以父控件的左上角為坐標(biāo)原點(diǎn))
2> 修改這個屬性,可以調(diào)整控件的位置
1> 表示控件的位置和尺寸(以自己的左上角位坐標(biāo)原點(diǎn)姆坚,位置永遠(yuǎn)是(0,0))
2> 修改這個屬性澳泵,只能調(diào)整控件的尺寸
1> 表示控件的形變狀態(tài)(旋轉(zhuǎn)角度、縮放比例)
2> 創(chuàng)建CGAffineTransform的函數(shù)
*CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
創(chuàng)建一個x兼呵、y方向的縮放比例分別為sx兔辅、sy的形變值
*CGAffineTransformMakeRotation(CGFloat angle)
創(chuàng)建一個旋轉(zhuǎn)角度為angle的形變值
*CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)
在形變值t的基礎(chǔ)上,再進(jìn)行縮放击喂,x维苔、y方向的縮放比例分別為sx、sy懂昂,然后返回一個新的形變值
*CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)
在形變值t的基礎(chǔ)上介时,再進(jìn)行旋轉(zhuǎn),旋轉(zhuǎn)角度為angle,然后返回一個新的形變值
返回當(dāng)前視圖的父視圖沸柔。(只讀)
返回當(dāng)前視圖的窗口循衰。(窗口)
獲取根視圖的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);? // 有值
}
默認(rèn)為YES徒蟆,表示當(dāng)父視圖尺寸改變時胁出,子視圖也會隨著改變。
默認(rèn)為UIViewAutoresizingNone,不會自動伸縮段审。
設(shè)置內(nèi)容模式全蝶。
UIViewContentModeScaleToFill ?不按照原寬高比例(長和寬不等比例增長)以任意比例填充。這樣視圖不會有空白寺枉,且內(nèi)容可以全部顯示抑淫。
UIViewContentModeAspectToFill ?按照原長寬比例填充,不完全顯示全部內(nèi)容姥闪。這樣內(nèi)容可能溢出始苇,但整個視圖不會留有空白。
UIViewContentModeAspectToFit ? 按照原長寬比例(長和寬等比例增長)筐喳,完全顯示全部內(nèi)容催式。這樣容易照成左右或者上下留有空白。
默認(rèn)是nil避归。
//設(shè)置背景顏色為紅色
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:?設(shè)置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.";//設(shè)置它顯示的內(nèi)容
2.???????????font:設(shè)置textView中文字的字體
_textView.font= [UIFontfontWithName:@"Arial"size:18.0];//設(shè)置字體名字和字體大小
3.???????????textColor:設(shè)置textView中文本的顏色
_textView.textColor= [UIColorblackColor];//設(shè)置textview里面的字體顏色
4.???????????textAlignment:設(shè)置textView的文本的排列方式
_textView.textAlignment=NSTextAlignmentCenter;// textView中的文本排列荣月,默認(rèn)靠左
5.???????????backgroundColor:設(shè)置textView的背景顏色
_textView.backgroundColor= [UIColorgrayColor];//設(shè)置淺灰色的背景色,默認(rèn)為白色
6.???????????delegate:設(shè)置代理
_textView.delegate=self;//設(shè)置代理
7.???????????editable:設(shè)置textView是否可被輸入
_textView.editable=NO;// textView是否可被輸入梳毙,默認(rèn)為YES
8.???????????attributedText:設(shè)置默認(rèn)插入textView的文字
_textView.attributedText= [[NSAttributedStringalloc]initWithString:@"attributedText__-abc"];//可以方便將文本插入到UITextView中哺窄。
9.???????????inputView:設(shè)置從底部彈出的視圖
_textView.inputView= [[UIDatePickeralloc]init];//彈出視圖,默認(rèn)為鍵盤
10.???inputAccessoryView:設(shè)置彈出視圖上方的輔助視圖
_textView.inputAccessoryView= [UIButtonbuttonWithType:UIButtonTypeDetailDisclosure];//彈出視圖上方的輔助視圖
11.???clearsOnInsertion:設(shè)置textView獲得焦點(diǎn)账锹,在用戶使用虛擬鍵盤進(jìn)行輸入時堂氯,清除之前的文本
_textView.clearsOnInsertion=YES;//clearsOnInsertion,默認(rèn)為NO
2.attributedText:設(shè)置標(biāo)簽屬性文本。
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;
默認(rèn)是系統(tǒng)自帶字體鸟缕,大小為17。
Ios代碼
label.font= [UIFontsystemFontOfSize:17]
label.font?=?[UIFont?fontWithName:@"Arial"size:16];
Ios代碼
label.textColor?=?[UIColor?blueColor];
4.textAlignment:設(shè)置標(biāo)簽文本對齊方式。
Ios代碼
label.textAlignment?=?NSTextAlignmentCenter;
5.lineBreakMode:設(shè)置標(biāo)簽文字過長時的顯示方式,這個屬性使用于label中文本的換行和截短懂从。首先numberofLines必須設(shè)置為0授段,才有效果。
Ios代碼
label.lineBreakMode?=?NSLineBreakByCharWrapping;以字符為顯示單位顯示番甩,后面部分省略不顯示侵贵。
label.lineBreakMode?=?NSLineBreakByClipping;剪切與文本寬度相同的內(nèi)容長度,后半部分被刪除缘薛。
label.lineBreakMode?=?NSLineBreakByTruncatingHead;前面部分文字以……方式省略窍育,顯示尾部文字內(nèi)容。
label.lineBreakMode?=?NSLineBreakByTruncatingMiddle;中間的內(nèi)容以……方式省略宴胧,顯示頭尾的文字內(nèi)容漱抓。
label.lineBreakMode?=?NSLineBreakByTruncatingTail;結(jié)尾部分的內(nèi)容以……方式省略,顯示頭的文字內(nèi)容恕齐。
label.lineBreakMode?=?NSLineBreakByWordWrapping;以單詞為顯示單位顯示乞娄,后面部分省略不顯示。
比如:
label.numberOfLines=0
label.lineBreakMode=NSLineBreakByTruncatingMiddle;
實(shí)現(xiàn)效果:
6.enabled:設(shè)置文字內(nèi)容是否可變显歧。
7.adjustsFontSizeToFitWidth:文字內(nèi)容自適應(yīng)標(biāo)簽寬度仪或。
8.adjustsLetterSpacingToFitWidth:根據(jù)字母的間隔自適應(yīng)標(biāo)簽寬度,超出部分以……顯示士骤。
9.numberOfLines:標(biāo)簽最多顯示行數(shù)范删。
10.minimumScaleFactor:設(shè)置最小字體,與minimumFontSize相同敦间,minimumFontSize在IOS 6后不能使用瓶逃。
11.highlightedTextColor:設(shè)置文本高亮顯示顏色,與highlighted一起使用廓块。
12.shadowColor:設(shè)置文本陰影顏色厢绝。
13.shadowColor:設(shè)置文本陰影與原文本的偏移量。label.shadowOffset= CGSizeMake(1.0, 5.0);
14.userInteractionEnabled:設(shè)置標(biāo)簽是否忽略或移除用戶交互带猴。默認(rèn)為NO昔汉。
15.preferredMaxLayoutWidth:優(yōu)先選擇標(biāo)簽布局的最大寬度。
16.baselineAdjustment:如果adjustsFontSizeToFitWidth屬性設(shè)置為YES拴清,這個屬性就來控制文本基線的行為靶病。
Ios代碼
label4.baselineAdjustment?=?UIBaselineAdjustmentNone;
UIBaselineAdjustmentAlignBaselines=0,默認(rèn)口予,文本最上端與中線對齊娄周。
UIBaselineAdjustmentAlignCenters,???文本中線與label中線對齊。
UIBaselineAdjustmentNone,??文本最低端與label中線對齊沪停。
ios代碼:清空背景顏色 label1.backgroundColor= [UIColor clearColor];
UIControlStateNormal????????? //正常狀態(tài)
UIControlStateHighlighted???? //高亮狀態(tài)
UIControlStateDisabled??????? //禁用狀態(tài)
UIControlStateSelected??????? //選中狀態(tài)
UIControlStateApplication???? //
UIControlStateReserved ???????//保留狀態(tài)
UIButtonTypeCustom ???????????//自定義類型
添加圖片:灰色背景顏色:
UIButtonTypeRoundedRect?????? //圓角類型
UIButtonTypeDetailDisclosure?? //細(xì)節(jié)展示按鈕
UIButtonTypeInfoLight????????? //淺色背景的信息按鈕
UIButtonTypeInfoDark?????????? //暗色背景的信息按鈕
UIButtonTypeContactAdd???????? //添加按鈕
給按鈕設(shè)置文字時煤辨,蘋果文檔說明裳涛,不能使用label對象設(shè)置文字的顏色或者陰影顏色,相反必須使用setTitleColor:forState:andsetTitleShadowColor:forState:這兩個方法才能修改這些值众辨。
設(shè)置按鈕中其他屬性依次類推端三。。鹃彻。郊闯。
//設(shè)置對應(yīng)狀態(tài)的標(biāo)題內(nèi)容default is nil. title is assumed to besingle line
- (void)setTitle:(NSString*)title forState:(UIControlState)state;
//設(shè)置對應(yīng)狀態(tài)的標(biāo)題顏色
- (void)setTitleColor:(UIColor*)color forState:(UIControlState)state;
//設(shè)置對應(yīng)狀態(tài)的標(biāo)題陰影顏色
- (void)setTitleShadowColor:(UIColor*)color forState:(UIControlState)state;
//設(shè)置對應(yīng)狀態(tài)的按鈕的圖片
- (void)setImage:(UIImage*)image forState:(UIControlState)state;
//設(shè)置對應(yīng)狀態(tài)的按鈕背景圖片
- (void)setBackgroundImage:(UIImage*)image forState:(UIControlState)state;
添加事件
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
這些事件都是基于觸摸、基于值蛛株、基于編輯团赁。有如下事件會觸發(fā)。
在點(diǎn)擊按鈕是按鈕是凹下去泳挥,然后彈起才觸發(fā)起事件然痊,按鈕的狀態(tài)有:
1.UIControlEventTouchDown//按下
2.
3.UIControlEventTouchDownRepeat多次按下
4.UIControlEventTouchUpInside//在按鈕及其一定外圍內(nèi)松開
5.
6.UIControlEventTouchUpOutside//按鈕外面松開
當(dāng)按鈕禁用的情況下,圖像的顏色會被畫深一點(diǎn)屉符,默認(rèn)為YES剧浸。
當(dāng)按鈕高亮的情況下,圖像的顏色會被畫深一點(diǎn)矗钟,默認(rèn)為YES唆香。
button.showsTouchWhenHighlighted=YES;點(diǎn)擊時的閃光效果會被前景圖片遮住中間部分;
設(shè)置按鈕的內(nèi)部內(nèi)容(包含按鈕圖片和標(biāo)題)離按鈕邊緣上下左右的距離吨艇。
1.有些時候我們想讓UIButton的title居左對齊躬它,我們設(shè)置
btn.textLabel.textAlignment= UITextAlignmentLeft
是沒有作用的,我們需要設(shè)置
btn.contentHorizontalAlignment = UIControlContentHorizonAlignmentLeft;
但是問題又出來东涡,此時文字會緊貼到左邊框冯吓,我們可以設(shè)置
btn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0);
使文字距離左邊框保持10個像素的距離。
1.UIControlEventTouchDown
單點(diǎn)觸摸按下事件:用戶點(diǎn)觸屏幕疮跑,或者又有新手指落下的時候组贺。
2.UIControlEventTouchDownRepeat
多點(diǎn)觸摸按下事件,點(diǎn)觸計(jì)數(shù)大于1:用戶按下第二祖娘、三失尖、或第四根手指的時候。
3.UIControlEventTouchDragInside
當(dāng)一次觸摸在控件窗口內(nèi)拖動時渐苏。
4.UIControlEventTouchDragOutside
當(dāng)一次觸摸在控件窗口之外拖動時掀潮。
5.UIControlEventTouchDragEnter
當(dāng)一次觸摸從控件窗口之外拖動到內(nèi)部時。
6.UIControlEventTouchDragExit
當(dāng)一次觸摸從控件窗口內(nèi)部拖動到外部時琼富。
7.UIControlEventTouchUpInside
所有在控件之內(nèi)觸摸抬起事件仪吧。
8.UIControlEventTouchUpOutside
所有在控件之外觸摸抬起事件(點(diǎn)觸必須開始與控件內(nèi)部才會發(fā)送通知)。
9.UIControlEventTouchCancel
所有觸摸取消事件鞠眉,即一次觸摸因?yàn)榉派狭颂嗍种付蝗∠厣蹋蛘弑簧湘i或者電話呼叫打斷摄咆。
10.UIControlEventTouchChanged
當(dāng)控件的值發(fā)生改變時,發(fā)送通知人断。用于滑塊、分段控件朝蜘、以及其他取值的控件恶迈。你可以配置滑塊控件何時發(fā)送通知,在滑塊被放下時發(fā)送谱醇,或者在被拖動時發(fā)送暇仲。
11.UIControlEventEditingDidBegin
當(dāng)文本控件中開始編輯時發(fā)送通知。
12.UIControlEventEditingChanged
當(dāng)文本控件中的文本被改變時發(fā)送通知副渴。
13.UIControlEventEditingDidEnd
當(dāng)文本控件中編輯結(jié)束時發(fā)送通知奈附。
14.UIControlEventEditingDidOnExit
當(dāng)文本控件內(nèi)通過按下回車鍵(或等價行為)結(jié)束編輯時,發(fā)送通知煮剧。
15.UIControlEventAlltouchEvents
通知所有觸摸事件斥滤。
16.UIControlEventAllEditingEvents
通知所有關(guān)于文本編輯的事件。
17.UIControlEventAllEvents
通知所有事件
獲取或設(shè)置UIAlertView上的標(biāo)題勉盅。
獲取或設(shè)置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中取消按鈕的角標(biāo)是%d",alert.cancelButtonIndex);
效果:
注意不要認(rèn)為取消按鈕的角標(biāo)是4佑颇,“取消”,“按鈕一”草娜,“按鈕二”挑胸,“按鈕三”的索引buttonIndex分別是0,1宰闰,2茬贵,3
5.1 UIAlertViewStyleLoginAndPasswordInput
UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"產(chǎn)品信息展示"message:p.namedelegate:nilcancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil];
alert.alertViewStyle=UIAlertViewStyleLoginAndPasswordInput;
//彈出UIAlertView
[alertshow];
5.2 UIAlertViewStylePlainTextInput
UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"產(chǎn)品信息展示"message:p.namedelegate:nilcancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil];
alert.alertViewStyle=UIAlertViewStylePlainTextInput;
//彈出UIAlertView
[alertshow];
5.3UIAlertViewStyleSecureTextInput
UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"產(chǎn)品信息展示"message:p.namedelegate:nilcancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil];
alert.alertViewStyle=UIAlertViewStyleSecureTextInput;
//彈出UIAlertView
[alertshow];
6. - (UITextField *)textFieldAtIndex:(NSInteger)textFieldIndex
返回textFieldIndex角標(biāo)對應(yīng)的文本框。
取出文本框文字
[alert dismissWithClickedButtonIndex:0?animated:YES];
作為UIAlertView的代理移袍,必須遵守UIAlertViewDelegate解藻。
1.當(dāng)點(diǎn)擊UIAlertView上的按鈕時,就會調(diào)用咐容,并且當(dāng)方法調(diào)完后舆逃,UIAlertView會自動消失。
- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
2.當(dāng)UIAlertView即將出現(xiàn)的時候調(diào)用
- (void)willPresentAlertView:(UIAlertView*)alertView;
3. 當(dāng)UIAlertView完全出現(xiàn)的時候調(diào)用
- (void)didPresentAlertView:(UIAlertView*)alertView;
4. 當(dāng)UIAlertView即將消失的時候調(diào)用
- (void)alertView:(UIAlertView*)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex;
5. 當(dāng)UIAlertView完全消失的時候調(diào)用
- (void)alertView:(UIAlertView*)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;
9.注意UIAlertView調(diào)用show顯示出來的時候戳粒,系統(tǒng)會自動強(qiáng)引用它路狮,不會被釋放。
在為UIAlertView對象太添加子視圖的過程中蔚约,有點(diǎn)是需要注意的地方奄妨,如果刪除按鈕,也就是取消UIAlerView視圖中所有的按鈕的時候苹祟,可能會導(dǎo)致整個顯示結(jié)構(gòu)失衡砸抛。按鈕占用的空間不會消失评雌,我們也可以理解為這些按鈕沒有真正的刪除,僅僅是他不可見了而已直焙。如果在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默認(rèn)情況下所有的text是居中對齊的。 那如果需要將文本向左對齊或者添加其他控件比如輸入框時該怎么辦呢厨喂?不用擔(dān)心和措, iPhone SDK還是很靈活的,有很多delegate消息供調(diào)用程序使用蜕煌。所要做的就是在
- (void)willPresentAlertView:(UIAlertView *)alertView
中按照自己的需要修改或添加即可派阱,比如需要將消息文本左對齊,下面的代碼即可實(shí)現(xiàn):
-(void) willPresentAlertView:(UIAlertView?*)alertView
{
for(?UIView?*?view?in?alertView.subviews?)
{
if([view?isKindOfClass:[UILabel?class]] )
{
UILabel*label = (UILabel*) view;
label.textAlignment=UITextAlignmentLeft;
}
}
}