IOS开发学习笔记019-动态创建控件

时间:2023-04-28 22:12:02

动态创建控件

一、按钮

二、文本输入框

三、lable标签

注意:

  只是简单的拖拽控件会毁了你,所以最好还是手动通过代码创建控件。

如果要通过代码生成按钮的话,可以在系统自带的函数viewDidLoad实现。应为每个控件都对应一个类,所以可以直接通过类创建一个对象,也就是一个控件,然后再逐步设置控件的属性。

下面这些操作基本上都是通用的,在不同的控件下操作基本相同

一、按钮

1、创建对象,这没啥好说的

UIButton *btn = [[UIButton alloc] init];

2、在显示到视图控制器之前还要设置一些基本属性

  1.1 设置按钮普通状态下得属性

// 设置背景图片

UIImage *image = [UIImage imageNamed:@"btn_01.png"];

[btn setBackgroundImage:image forState:UIControlStateNormal];

// 设置显示的文字

[btn setTitle:@"come on" forState:UIControlStateNormal];

// 设置文字颜色

UIColor *color = [UIColor colorWithRed:0 green:0 blue:124 alpha:1];

[btn setTitleColor:color forState:UIControlStateNormal];

UIControlStateNormal、UIControlStateHighlighted表示按钮的状态,表示普通模式和高亮模式

1.2 设置高亮状态下得属性

image = [UIImage imageNamed:@"btn_02.png"];

[btn setBackgroundImage:image forState:UIControlStateHighlighted];

// 设置显示的文字

[btn setTitle:@"去死" forState:UIControlStateHighlighted];

// 设置文字颜色

color = [UIColor colorWithRed:200 green:0 blue:0 alpha:1];

[btn setTitleColor:color forState:UIControlStateHighlighted];

3、创建后要把对象添加到视图,这样才能显示出来。

[self.view addSubview:btn];  // 添加按钮到控制器中得viwe中

具体过程就看代码吧。

 #import "SLQViewController.h"

 const int DELTA = ;
@interface SLQViewController () @end @implementation SLQViewController // 控制器的view加载完毕会调用一次
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"viewdidload-----"); // 1、创建按钮
UIButton *btn = [[UIButton alloc] init]; // 设置位置和尺寸
btn.frame = CGRectMake(, , , );
// 设置按钮普通状态下得属性
// 设置背景图片
UIImage *image = [UIImage imageNamed:@"btn_01.png"];
[btn setBackgroundImage:image forState:UIControlStateNormal];
// 设置显示的文字
[btn setTitle:@"come on" forState:UIControlStateNormal];
// 设置文字颜色
UIColor *color = [UIColor colorWithRed: green: blue: alpha:];
[btn setTitleColor:color forState:UIControlStateNormal];
//;
//[btn setTitleColor:<#(UIColor *)#> forState:<#(UIControlState)#>]; // 设置高亮状态下得属性
image = [UIImage imageNamed:@"btn_02.png"];
[btn setBackgroundImage:image forState:UIControlStateHighlighted];
// 设置显示的文字
[btn setTitle:@"去死" forState:UIControlStateHighlighted];
// 设置文字颜色
color = [UIColor colorWithRed: green: blue: alpha:];
[btn setTitleColor:color forState:UIControlStateHighlighted]; // 监听按钮点击事件
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
// 2、添加按钮到控制器中得viwe中
[self.view addSubview:btn];
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (void)btnClick:(UIButton *)btn
{
NSLog(@"点击按钮:%p",btn);
}

二、文本输入框

创建一个文本输入框

     // 文本框
UITextField *text = [[UITextField alloc] init]; // 创建对象
text.frame = CGRectMake(, , , ); // 设置位置和尺寸
text.backgroundColor = [UIColor redColor]; // 设置背景颜色
[self.view addSubview:text]; // 添加到视图控制器的view中

效果这样

IOS开发学习笔记019-动态创建控件

三、lable标签

创建lable标签

    // lable标签
UILabel *lable = [[UILabel alloc] init]; // 创建lable对象
lable.frame = CGRectMake(, , ,); // 设置位置和尺寸
lable.text = @"this is a lable"; // 设置显示文本
lable.textColor = [UIColor colorWithRed: green: blue: alpha:]; // 设置RGBA值
lable.font = [UIFont systemFontOfSize:];
[self.view addSubview:lable]; // 添加到view中

关于这个控件包含的属性和方法可以直接去源文件里查找。比如说lable的下列可操作属性。

 @property(nonatomic,copy)   NSString           *text;            // default is nil
@property(nonatomic,retain) UIFont *font; // default is nil (system font 17 plain)
@property(nonatomic,retain) UIColor *textColor; // default is nil (text draws black)
@property(nonatomic,retain) UIColor *shadowColor; // default is nil (no shadow)
@property(nonatomic) CGSize shadowOffset; // default is CGSizeMake(0, -1) -- a top shadow
@property(nonatomic) NSTextAlignment textAlignment; // default is NSTextAlignmentLeft
@property(nonatomic) NSLineBreakMode lineBreakMode; // default is NSLineBreakByTruncatingTail.

总结:

通过代码创建控件的一般过程就是

1、创建一个OC类对象,其实就是对应一个控件

  比如 UIButton *btn = [[UIButton alloc] init]; //

2、对控件的一般属性进行设置,不然无法显示到view中

  比如设置位置尺寸、标题,字体,背景等属性,可以去对应的类中查看可以是用的属性和方法。

3、添加到View视图,这样最终才会显示到程序中。