UIView:父类的所有控件,所有的UIView它是一个容器。可容纳其他UIView
UIController:用于控制UIView,责创建/销毁自己的UIView,显示/隐藏UIView。处理UIView和用户交互(事件处理)
界面的创建过程,先创建一个ViewController,再由其创建自己的UIView,最后把UIView显示到用户眼前,而且由UIViewController处理UIView的事件。
程序的启动过程:
载入配置为main的storyboard,创建白色箭头仅仅想的控制器对象。接下来创建控制其内部的UIView,显示到用户面前。
构件界面的两种方式:
1. 使用storyboard
要使用某个控件须要在控制器文件里声明该属性,并将其和控件连线。而且须要将该属性声明为IBOutlet类型
加入事件监听的时候须要将该方法声明为IBAction,然后将控件的某个事件和该方法连线
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2F1Y2h5d2VpZXJzdHJhc3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
点击事件运行的方法
- (IBAction)run:(id)sender
{
[self execWithBlock:^{
CGRect tempFrame;
switch ([sender tag]) {
case 1:
tempFrame = self.btn.frame;
tempFrame.origin.y += 10;
self.btn.frame = tempFrame;
break;
case 2:
// 旋转
//tempCenter = self.btn.center;
_btn.transform = CGAffineTransformRotate(_btn.transform, -1*M_PI_4);
//self.btn.center = tempCenter;
break;
case 3:
// 放大
_btn.transform = CGAffineTransformScale(_btn.transform, 1.2, 1.2);
break;
case 4:
// 复位
self.btn.transform = CGAffineTransformIdentity;
break;
}
}];}
-(void) execWithBlock:(void(^)())block
{
// 设置动画
[UIView beginAnimations:nil context:nil];
//设置动画的时间
[UIView setAnimationDuration:1];
block();
[UIView commitAnimations];
}
2.使用代码动态生成
须要在viewDidLoad方法里面构建控件。并将其加入到父UIView里面
UIButton * btn = [[UIButton alloc]init];
btn.frame = CGRectMake(0, 0, 100, 100);
[btn setTitle:@"哈哈" forState:UIControlStateNormal];
[btn setTitle:@"呵呵" forState:UIControlStateHighlighted]; [btn setBackgroundColor:[UIColor redColor]];
[btn setBackgroundColor:[UIColor greenColor]]; [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
-(void) click:(id)btn
{
[btn setBackgroundColor:[UIColor blackColor]];
}
采用storyboard并使用代码来创建界面是一样的效果。于storyboard在此之后的连接可以关联属性的控件和声明。