在开发过程中,并不是每次都通过storyboard拖控件完成UI界面,因为storyboard上面的界面是“固定死”的,有时候可能会在程序运行过程中动态地添加一些新的控件到界面上。
比如QQ的聊天信息,是有人发出一条信息后才动态显示出来的。
因此,需要掌握如何用代码动态地添加控件 实际上,storyboard的本质就是根据图形界面描述转成相应的代码。
实践:
@implementation kViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//1.创建按钮
UIButton *btn = [[UIButton alloc]init]; // [UIButton buttonWithType:UIButtonTypeCustom];
//2.添加按钮
[self.view addSubview:btn];
//3.设置frame
btn.frame = CGRectMake(50, 50, 100, 100);
//4.设置背景色
btn.backgroundColor = [UIColor blueColor];
//通过文件名加载图片,凡是png图片都不用加拓展名
UIImage *image = [UIImage imageNamed:@"m_6_634517026029062500_10397576"];
[btn setBackgroundImage:image forState:UIControlStateNormal];
UIImage *highlignt = [UIImage imageNamed:@"m_14_634599171325781250_35568510"];
[btn setBackgroundImage:highlignt forState:UIControlStateHighlighted];
[btn setTitle:@"点我啊" forState:UIControlStateNormal];
[btn setTitle:@"摸我干嘛" forState:UIControlStateHighlighted];
//监听按钮点击
[btn addTarget:self action:@selector(btnclick:) forControlEvents:UIControlEventTouchUpInside];
}
-(void)btnclick:(UIButton *) btn{
NSLog(@"-----%@",btn);
}
几行代码就可以代替在storyboard拖拽并设置控件属性同样的效果
// 取得按钮的第一种做法是拖线,自动生成属性代码
// 取得按钮的另外一种方法,如果两个view的tag相同,则按照优先级先找到先放进去的view
//UIButton *UIbtn = (UIButton *)[self.view viewWithTag:xxx];//tag的值是在storyboard设置的