关闭

iOS-ui-normal_ui_control

190人阅读 评论(0) 收藏 举报
分类:
苹果的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];
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:79230次
    • 积分:1629
    • 等级:
    • 排名:千里之外
    • 原创:80篇
    • 转载:0篇
    • 译文:0篇
    • 评论:12条
    最新评论