苹果的ui控件都是以UI开头,比如UISlider、UIView、UISwitch、UITextField。所以,在查找一个控件时,查找关键字的开始是UI。
很多控件都是UIControl,所有UIControl都是UIView。
静态控件,一般只用于显示信息,不交互,如label和imageView。
动态控件,如按钮等,一般用于交互。
被动控件,如文本控件,能交互,一般记录信息,配合其它事件使用。
图片视图UIImageView。
继承于UIView。可以直接在xib中拖出image view,然后在属性控制面板设置它的图片(只能是png),与及其它属性。但一般在代码里面写会更灵活并有成就感---同样在viewController(就是File’s Owner)里面定义IBOutlet,然后在xib里面按住control键关联拉出来的imageView与代码里面的变量。这样定义变量:
@interface uiTest3ViewController : UIViewController {
IBOutlet UIImageView* myImageView;
}
@property (nonatomic, retain) UIImageView* myImageViw;
@end
程序在加载xib时,这个图片视图就给创建了(所以代码里面不要再创建,只管在dealloc里面释放即可),然后找时机给这个图片视图设置图片,在viewDidLoad里面设置即可,调用这个函数时说明xib已经加载完了,实例已经可以使用了:
- (void)viewDidLoad
{
myImageView.image = [UIImage imageNamed: @"Default.png"];
[super viewDidLoad];
}
文本字段UITextField
在xib中直接拖出TextField,然后设置它的属性。Placeholder属性是文本控件未编辑时以灰色显示的提示。Return Key属性是在编辑文本时弹出的键盘中回车键处显示的内容(可以是Done,Search等)。其它属性可自行设置。
用户在按下键盘的“Done”键完成输入时,键盘应该消失掉,实现的方法是让文件字段失去焦点即放弃第一响应者(第一响应者就是正在交互的有焦点的控件)。给文件字段的事件Did End On Exit添加一个事件方法,且关联起来。这个事件方法可以这样写:
- (IBAction) editDone: (id)sender
{
[sender resignFirstResponder];
}
这样,按下”Done”键时键盘就会消息掉。
如果想做到点击文本字段外的其它地方(非可编辑的地方)键盘也消失掉,可以这样实现:在xib中,点View图标(在First Responder图标下面),然后在Identity面板,把Class从UIView改成UIControl,让这个view变成一个control,这样再在control视图上右击时就可以看到有很多事件可以处理了,选择Touch Down,为这个事件添加一个事件方法,方法里面让所有文本字段resignFirstResponder即可。
在xib上拖动控件时,注意使用蓝色的引导线,可以高效的调整控件大小与位置。
滑块UISlider
可以在属性面板里面设置这个实例的取值范围,以及它的初始值。
常用的事件是Value Changed,在滑动滑块时就会触发这个事件。
开关UISwitch
UISwitch* switcher = (UISwitch*)sender;
BOOL bIsOn = [switcher isOn];
[leftSwitch setOn: bIsOn animated: YES];
标签UILabel
按钮UIButton
分段控件UISegmentedControl
使用这个控件可以实现分页显示的效果。在xib里面拉出一个segmented control,可以设置属性Segments,用来显示几个分段,最少2个。然后可以设置每一个分段的标题、图片,以及程序初始化时分段是否被选中等属性。
在分段被选择点击时,触发Value Changed事件,应该添加事件方法,如:
- (IBAction) segmentValueChange: (id)sender
{
UISegmentedControl* segContrl = (UISegmentedControl*)sender;
if ([segContrl selectedSegmentIndex] == 0)
{
}
else
{
}
}
操作表UIActionSheet
操作表是一个模态框,需要在另一个view上面显示。
操作表创建与显示的例子:
- (IBAction) buttonPressed: (id)sender
{
UIActionSheet* actonSheet = [[UIActionSheet alloc] initWithTitle: @"confirm"
delegate: self
cancelButtonTitle: @"取消"
destructiveButtonTitle: @"继续"
otherButtonTitles: @"more", nil];
[actonSheet showInView: self.view];
[actonSheet release];
}
操作至少会有一个取消按钮与一个继续按钮,标题可自行设置。可以有更多的按钮,与nil来结尾即可,显然都是一个标题对应一个按钮。actionSheet与self进行交互,所以要求self是actionSheet能够识别的类型,这种类型就是UIActionSheetDelegate,所以self对应的类(就是viewController)应该继承于这个协议。然后self类应该实现协议方法,比如:
- (void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if ([actionSheet cancelButtonIndex] != buttonIndex)
{
UIAlertView* alerView = [[UIAlertView alloc] initWithTitle: @"信息通知"
message: @"information: nothing"
delegate: nil
cancelButtonTitle: @"知道了"
otherButtonTitles: @"ok", nil];
[alerView show];
[alerView release];
}
}
警报UIAlertView
警报用来提供通知。
警报的创建与显示同上面的例子。同样有标题、正文与按钮。当不需要处理协议方法时,delegate填nil即可。以下是一个显示信息的封装函数:
- (void) msgBox: (NSString*) info
{
UIAlertView* alerView = [[UIAlertView alloc] initWithTitle: @"..."
message: info
delegate: nil
cancelButtonTitle: @"收到"
otherButtonTitles: nil];
[alerView show];
[alerView release];
}
很多控件都是UIControl,所有UIControl都是UIView。
静态控件,一般只用于显示信息,不交互,如label和imageView。
动态控件,如按钮等,一般用于交互。
被动控件,如文本控件,能交互,一般记录信息,配合其它事件使用。
图片视图UIImageView。
继承于UIView。可以直接在xib中拖出image view,然后在属性控制面板设置它的图片(只能是png),与及其它属性。但一般在代码里面写会更灵活并有成就感---同样在viewController(就是File’s Owner)里面定义IBOutlet,然后在xib里面按住control键关联拉出来的imageView与代码里面的变量。这样定义变量:
@interface uiTest3ViewController : UIViewController {
IBOutlet UIImageView* myImageView;
}
@property (nonatomic, retain) UIImageView* myImageViw;
@end
程序在加载xib时,这个图片视图就给创建了(所以代码里面不要再创建,只管在dealloc里面释放即可),然后找时机给这个图片视图设置图片,在viewDidLoad里面设置即可,调用这个函数时说明xib已经加载完了,实例已经可以使用了:
- (void)viewDidLoad
{
myImageView.image = [UIImage imageNamed: @"Default.png"];
[super viewDidLoad];
}
文本字段UITextField
在xib中直接拖出TextField,然后设置它的属性。Placeholder属性是文本控件未编辑时以灰色显示的提示。Return Key属性是在编辑文本时弹出的键盘中回车键处显示的内容(可以是Done,Search等)。其它属性可自行设置。
用户在按下键盘的“Done”键完成输入时,键盘应该消失掉,实现的方法是让文件字段失去焦点即放弃第一响应者(第一响应者就是正在交互的有焦点的控件)。给文件字段的事件Did End On Exit添加一个事件方法,且关联起来。这个事件方法可以这样写:
- (IBAction) editDone: (id)sender
{
[sender resignFirstResponder];
}
这样,按下”Done”键时键盘就会消息掉。
如果想做到点击文本字段外的其它地方(非可编辑的地方)键盘也消失掉,可以这样实现:在xib中,点View图标(在First Responder图标下面),然后在Identity面板,把Class从UIView改成UIControl,让这个view变成一个control,这样再在control视图上右击时就可以看到有很多事件可以处理了,选择Touch Down,为这个事件添加一个事件方法,方法里面让所有文本字段resignFirstResponder即可。
在xib上拖动控件时,注意使用蓝色的引导线,可以高效的调整控件大小与位置。
滑块UISlider
可以在属性面板里面设置这个实例的取值范围,以及它的初始值。
常用的事件是Value Changed,在滑动滑块时就会触发这个事件。
开关UISwitch
UISwitch* switcher = (UISwitch*)sender;
BOOL bIsOn = [switcher isOn];
[leftSwitch setOn: bIsOn animated: YES];
标签UILabel
按钮UIButton
分段控件UISegmentedControl
使用这个控件可以实现分页显示的效果。在xib里面拉出一个segmented control,可以设置属性Segments,用来显示几个分段,最少2个。然后可以设置每一个分段的标题、图片,以及程序初始化时分段是否被选中等属性。
在分段被选择点击时,触发Value Changed事件,应该添加事件方法,如:
- (IBAction) segmentValueChange: (id)sender
{
UISegmentedControl* segContrl = (UISegmentedControl*)sender;
if ([segContrl selectedSegmentIndex] == 0)
{
}
else
{
}
}
操作表UIActionSheet
操作表是一个模态框,需要在另一个view上面显示。
操作表创建与显示的例子:
- (IBAction) buttonPressed: (id)sender
{
UIActionSheet* actonSheet = [[UIActionSheet alloc] initWithTitle: @"confirm"
delegate: self
cancelButtonTitle: @"取消"
destructiveButtonTitle: @"继续"
otherButtonTitles: @"more", nil];
[actonSheet showInView: self.view];
[actonSheet release];
}
操作至少会有一个取消按钮与一个继续按钮,标题可自行设置。可以有更多的按钮,与nil来结尾即可,显然都是一个标题对应一个按钮。actionSheet与self进行交互,所以要求self是actionSheet能够识别的类型,这种类型就是UIActionSheetDelegate,所以self对应的类(就是viewController)应该继承于这个协议。然后self类应该实现协议方法,比如:
- (void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if ([actionSheet cancelButtonIndex] != buttonIndex)
{
UIAlertView* alerView = [[UIAlertView alloc] initWithTitle: @"信息通知"
message: @"information: nothing"
delegate: nil
cancelButtonTitle: @"知道了"
otherButtonTitles: @"ok", nil];
[alerView show];
[alerView release];
}
}
警报UIAlertView
警报用来提供通知。
警报的创建与显示同上面的例子。同样有标题、正文与按钮。当不需要处理协议方法时,delegate填nil即可。以下是一个显示信息的封装函数:
- (void) msgBox: (NSString*) info
{
UIAlertView* alerView = [[UIAlertView alloc] initWithTitle: @"..."
message: info
delegate: nil
cancelButtonTitle: @"收到"
otherButtonTitles: nil];
[alerView show];
[alerView release];
}