你真的了解UIControl吗?

UIControl是UIKit框架中的一个基类,它继承自UIView,是一种UI控件,可以响应用户的操作(比如点击、拖拽等),并将这些操作转化为程序处理的事件。在iOS开发中,UIControl在各种界面交互中扮演了重要的角色,如按钮、文本框、滑块、开关等都是UIControl的子类。

一、UIControl的主要属性和方法介绍

1. UIControlState:

UIControlState是UIControl的一个枚举类型,用来表示控件的不同状态,例如按钮的正常状态和高亮状态。具体包含以下值:

1). Normal:正常状态。

2). Highlighted:高亮状态。

3). Disabled:失效状态。

4). Selected:选中状态。

5). Focused:聚焦状态。

2. addTarget: action: forControlEvents:

该方法用于控件添加动作事件监听器,当控件接收到对应事件时,将触发指定的动作。

调用方法如下:

```

- (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;

```

其中target代表接收事件通知响应方法的对象,action代表接到事件通知后响应的方法,controlEvents代表事件的类型。

3. removeTarget: action: forControlEvents:

该方法是对上述 addTarget函数的逆过程,用于移除一个控件的动作事件监听器。

调用方法如下:

```

- (void)removeTarget:(nullable id)target action:(nullable SEL)action forControlEvents:(UIControlEvents)controlEvents;

```

其中target、action、controlEvents三个参数表示对应的监听器和事件类型。

4. 状态的改变

控件在不同的状态下,颜色、样式以及对用户输入的反应都是不一样的,因此状态的改变是控件的重要属性。对于UIControl来说,它的状态可以通过设置各种属性来改变,如以下示例:

```

//按钮变成不可用状态

button.enabled = NO;

//改变按钮文字颜色

[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

[button setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];

[button setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];

```

通过UIColor的实例来设置不同状态下文字的颜色,这样当按钮处于对应状态时,文字颜色就会相应改变。

5. setSelected:

该方法用于设置UIControl控件是否被选中。

调用方法如下:

```

- (void)setSelected:(BOOL)selected;

```

6. setHighlighted:

该方法用于设置UIControl控件是否高亮。

调用方法如下:

```

- (void)setHighlighted:(BOOL)highlighted;

```

二、UIControl的常见子类及应用场景

根据枚举类型UIControlState,我们可以看到继承自UIControl的各种子类的定义是不同的,由此可见每个子类有其特殊的使用场景和特殊的作用。

1. UIButton

UIButton是最常用的UIControl子类之一,它可以根据不同的状态显示不同的标题和图片,可作为用户交互的常见元素,支持多种事件类型和动画效果。一般情况下,点击按钮会触发相应方法,比如点击登录按钮将触发登录方法。UIButton的常用属性及方法如下:

(1)属性

1). tag:标签,可以通过它来区分多个UIButton。

2). titleLabel:标题标签,可以通过它来修改UILabel的属性。

3). imageView:按钮的图片视图,可以使用它来替换UIButton默认的图片。

4). contentHorizontalAlignment:水平对齐方式,默认为左对齐。

5). contentVerticalAlignment:竖直对齐方式,默认为顶部对齐。

(2)方法

1). titleLabel:为UIButton添加文字标题。

2). setImage: forState:为UIButton添加图片。

3). setTitle: forState:为UIButton添加标题。

示例:

```

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

[button setTitle:@"登录" forState:UIControlStateNormal];

[button setBackgroundColor:[UIColor blueColor]];

button.titleLabel.textColor = [UIColor whiteColor];

button.layer.cornerRadius = 5;

button.layer.masksToBounds = YES;

button.translatesAutoresizingMaskIntoConstraints = NO;

[button addTarget:self action:@selector(loginAction:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

```

2. UISlider

UISlider用于显示一个滑块条,可以根据用户滑动选取一个数值,可以滑动改变附带视图的位置等,作为用户交互的一种元素。UISlider的常用属性及方法如下:

(1)属性

1). continuous:是否连续,即是否在拖动滑块的过程中持续地调用响应方法。

2). minimumValue:滑块的最小值。

3). maximumValue:滑块的最大值。

4). value:滑块的当前值。

(2)方法

1). setMaximumTrackImage:为UISlider添加最大值的轨迹图片。

2). setMinimumTrackImage:修改UISlider的流动轨迹图片。

3). setThumbImage:修改UISlider的圆形滑块的图片。

示例:

```

UISlider *slider = [[UISlider alloc] init];

slider.maximumValue = 100;

slider.minimumValue = 0;

slider.value = 50;

[slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];

[self.view addSubview:slider];

```

3. UISwitch

UISwitch是一种开关控件,用于表示开关状态,可以用来控制操作的输入和输出等情况。UISwitch的常用属性及方法如下:

(1)属性

1). on:UISwitch是否处于打开状态。

2). onTintColor:UISwitch处于打开状态的背景颜色。

3). offTintColor:UISwitch处于关闭状态的背景颜色。

4). thumbTintColor:控制滑块的颜色。

(2)方法

1). setOn:设置UISwitch的开关状态。

2). setOnTintColor:设置UISwitch处于打开状态时的背景颜色。

3). setOffTintColor:设置UISwitch处于关闭状态时的背景颜色。

4). setThumbTintColor:设置UISwitch的圆形滑块的颜色。

示例:

```

UISwitch *swith = [[UISwitch alloc] init];

swith.on = YES;

[swith addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged];

[self.view addSubview:swith];

```

4. UITextField

UITextField是一种文本输入框,可以编辑、输入和显示用户输入的文本,是iOS开发中最基本的用户交互元素之一。UITextField的常用属性及方法如下:

(1)属性

1). text:UITextField中的文本。

2). placeholder:未输入时默认显示的占位符文本。

3). borderStyle:UITextField的边框风格。

4). secureTextEntry:文本安全显示,用于输入密码等保密信息。

5). backgroundColor:UITextField的背景颜色。

6). font:UITextField的文本字体。

7). textColor:UITextField的文本颜色。

(2)方法

1). setText:设置UITextField的文本内容。

2). setFont:设置UITextField的文本字体。

3). setTextColor:设置UITextField的文本颜色。

例子:

```

UITextField *textField = [[UITextField alloc] init];

textField.borderStyle = UITextBorderStyleRoundedRect;

textField.placeholder = @"请输入内容";

textField.textColor = [UIColor blackColor];

[self.view addSubview:textField];

```

总结:

以上是对UIControl的简单介绍,它是iOS开发中十分重要的一种控件,主要有UIButton、UISlider、UISwitch和UITextField等常用的子类,每个子类都有其特殊的使用场景和特殊的作用。了解UIControl的属性和方法可以帮助我们更好地应用这些控件,满足用户需求,提高APP的用户体验。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(84) 打赏

评论列表 共有 1 条评论

残风尘缘若梦 1年前 回复TA

诚挚的祝福做自己前行的帆,用自己执着的信念做自己前进的桨。无论顺风而上还是逆水行舟,都有我默默的信任和陪伴!

立即
投稿
发表
评论
返回
顶部