IOS UITextField使用

本文介绍了一个简单的iOS项目,使用UIView实现了彩虹颜色变化的动画效果。项目重点在于UIView的初始化及颜色变化逻辑,利用定时器NSTimer实现连续的颜色切换。
七色彩虹小项目总结

本项目 从构思到完成 用时不长,主要是在思考功能化的实现,如初始化视图,改变视图状

态,主要就是这两个函数。初始化里面,是对各个UIView的定义,布局,设置颜色等初始

化工作。其中主要用到的是UIView这个类,她是视图的基类,
 //红色视图
    UIView *redView=[[UIView alloc] initWithFrame:CGRectMake(20, 20, 280, 280)];
    redView.backgroundColor=[UIColor redColor];
    redView.tag=1;
    [self.view addSubview:redView];
    [redView release];

如上所示,初始化一个View,设置其背景颜色,标志,向其中添加视图,等等。

第二个函数就是完成,主要功能,视图的状态改变。其中有一个NSArray 用来保存颜色值,一个NSMutableArray 用来保存各个视图对象。

以下为关键代码

    for (int i=0; i<7-currentColor; i++) {
        [[viewArray objectAtIndex:i] setBackgroundColor:[colorArray objectAtIndex:i+currentColor]];
    }
    
    for (int i=6-currentColor,j=0; i<7;j++,i++) {
        [[viewArray objectAtIndex:i] setBackgroundColor:[colorArray objectAtIndex:j]];
    }

最后用到一个定时器功能,需要循环调用改变视图状态的函数。


NSTimer 其用法如下

 
    NSTimer *timer=[NSTimer  timerWithTimeInterval:0.5 target:self selector:@selector(showChangeView:) userInfo:nil repeats:YES];
    NSRunLoop *runloop=[NSRunLoop currentRunLoop];
    [runloop addTimer:timer forMode:NSDefaultRunLoopMode];
    
//    [timer fire];
    
    
    
    NSTimer *time2=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(showChangeView:) userInfo:nil repeats:YES];
    [time2 fire];


通过运行程序发现NSTimer的各个初始化方法的差异,如上可见,有的是直接加入到循环队列里,一个必须手添加,其实看单词 也能看出来,以后要多总结,嘿嘿;

Creating a Timer
        + scheduledTimerWithTimeInterval:invocation:repeats:
        + scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
        + timerWithTimeInterval:invocation:repeats:
        + timerWithTimeInterval:target:selector:userInfo:repeats:
        – initWithFireDate:interval:target:selector:userInfo:repeats:


Firing a Timer
        – fire  //开始一个定时器
Stopping a Timer
        – invalidate //取消一个定时器
Information About a Timer
        – isValid
        
        – fireDate //Return Value
        The date at which the receiver will fire. If the timer is no longer valid, this method returns the last date at which the timer fired.
        
        – setFireDate:
        Parameters
        date
        The new date at which to fire the receiver. If the new date is in the past, this method sets the fire time to the current time.
        
        – timeInterval
        Return Value
        The receiver’s time interval. If the receiver is a non-repeating timer, returns 0 (even if a time interval was set).
        
        – userInfo
Return Value
The receiver's userInfo object.

插曲:最后又给这个项目加了一点动画,是自己前几天刚从网上学的,虽然还没有
理解其原理,但感觉可以用在这里,实现后发现,果然效果不错。

项目总结:在这个小项目中,我学到了,好多东西,首先,拿到一问题,不要急着
下手去解决,先把问题分解,分解成各个模块,然后再一个一个去解决。这样很重
要,可以把问题细化,复杂问题简单化,然后各个击破,这样就显得程序结构清
楚,编程思路明朗,维护起来比较容易。好的编程模式,可以节省好多力气,以后
要多多总结,多多实践,好了这个项目先做到这里吧。牵涉到的知识点,不是很懂
的,会很快学习然后慢慢充实自己的知识结构体系。




### 创建和基本配置 UITextFieldiOS 开发中,`UITextField` 是一个基础控件,用于接收用户的文本输入。开发者可以通过代码或 Interface Builder 来创建 `UITextField`。在代码中创建时,需要设置其 `frame` 属性以定义位置和大小,并将其添加到视图层级中。例如,以下代码创建了一个 `UITextField` 实例,并设置了其背景颜色、文本颜色、字体大小等属性: ```objective-c UITextField* textField = [[UITextField alloc] init]; textField.frame = CGRectMake(20, 100, 280, 50); textField.backgroundColor = [UIColor blackColor]; textField.textColor = [UIColor redColor]; textField.font = [UIFont systemFontOfSize:36]; textField.text = @"看我的字体和颜色"; [self.view addSubview:textField]; ``` ### UITextField 的边框样式 `UITextField` 提供了多种边框样式,可以通过 `borderStyle` 属性进行设置。例如,`UITextBorderStyleBezel` 样式可以为文本框添加一个带有轻微凸起效果的边框,这有助于提高用户界面的视觉吸引力[^2]。 ### 设置清空按钮 为了提供更好的用户体验,`UITextField` 支持添加一个清空按钮,允许用户一键清除输入内容。这个功能可以通过设置 `clearButtonMode` 属性来实现,开发者可以选择在何时显示清空按钮,如始终显示、仅当编辑时显示等。 ### UITextField 的布局与定位 在进行 `UITextField` 的布局时,除了直接设置 `frame` 外,还可以利用 Auto Layout 技术来确保控件在不同设备和屏幕方向下都能正确显示。通过约束(Constraints)来定义 `UITextField` 相对于其父视图或其他控件的位置关系,可以实现灵活且响应式的布局设计。 ### 交互行为处理 处理 `UITextField` 的交互行为通常涉及响应用户的输入事件。开发者可以通过设置 `delegate` 属性来监听文本变化、开始和结束编辑等事件。例如,实现 `textFieldDidChange:` 方法可以实时更新界面或验证用户输入。 ### 自定义扩展 对于需要特殊功能的场景,`UITextField` 可以通过子类化或类别(Category)的方式进行扩展。例如,可以添加自定义的输入验证逻辑、格式化输出或是集成第三方键盘等。 ### 错误处理 在使用 `UITextField` 时,可能会遇到各种问题,如输入不符合预期、布局异常等。良好的错误处理机制可以帮助开发者快速定位并解决问题。例如,当遇到“Receiver has no segue with identifier”这样的错误时,应检查 Storyboard 中的 segue 标识符是否正确配置[^4]。 ### 国际化支持 对于面向全球用户的应用程序,`UITextField` 的提示信息和默认文本需要支持多语言。可以通过本地化字符串文件来实现这一点,确保应用能够在不同的语言环境中正常工作。例如,使用 `NSLocalizedString` 宏来获取当前语言环境下的正确文本。 ### 示例:UITextField 的基本使用 下面是一个简单的示例,展示了如何创建一个带有清空按钮的 `UITextField`,并设置其基本样式: ```objective-c - (void)viewDidLoad { [super viewDidLoad]; UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 100, 280, 50)]; textField.borderStyle = UITextBorderStyleBezel; textField.backgroundColor = [UIColor whiteColor]; textField.textColor = [UIColor blackColor]; textField.font = [UIFont systemFontOfSize:17]; textField.placeholder = @"请输入内容"; textField.clearButtonMode = UITextFieldViewModeWhileEditing; [self.view addSubview:textField]; } ``` 此代码片段创建了一个 `UITextField`,设置了其边框样式、背景色、文本颜色、字体大小以及占位符文本,并启用了编辑时显示清空按钮的功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值