uilabe和UIText扩展方法

+(UILabel*)LabWithFrame:(CGRect)_rect
text:(NSString*)aText
textColor:(UIColor*)aColor
textAlign:(NSTextAlignment)aAlign
font:(UIFont*)aFont{
UILabel *lab = [[[UILabel alloc] initWithFrame:_rect] autorelease];
lab.backgroundColor = [UIColor clearColor];
if ([aText length] > )
lab.text = aText;
if (aColor)
lab.textColor = aColor;
if(aAlign)
lab.textAlignment = aAlign;
if (aFont)
lab.font = aFont;
return lab;
}
@end
@implementation UITextField (my)
+(UITextField*)TextFieldWithFrame:(CGRect)_rect
target:(id)target
text:(NSString*)aText
textColor:(UIColor*)aTextColor
textAlign:(NSTextAlignment)aAlign
placeHolder:(NSString*)holder
clearMode:(UITextFieldViewMode)aViewMode
{
UITextField *textField = [[[UITextField alloc] initWithFrame:_rect] autorelease];
textField.backgroundColor = [UIColor clearColor];
textField.delegate = target; if (aAlign)
textField.textAlignment = aAlign;
if ([aText length] > )
textField.text = aText;
if (aTextColor)
textField.textColor = aTextColor;
if (aViewMode)
textField.clearButtonMode = aViewMode;
if ([holder length] > )
textField.placeholder = holder;
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; return textField;
}

在viewdidLoad中初始化控件,并且把label放入到集合中

#import "UILabel+my.h"
#import "UITextField+my.h" #define KPadding 10
#define KLbWidth 100
#define KlbHeight 50
#define KFont 12
#define kTextHeight 30
@interface ViewController ()
{
UITextField *UserNameField;
UITextField *PassWordField;
UITextField *yzmField;
UILabel *lb;
}
//存放文本框的集合
@property(nonatomic,retain)NSMutableArray *UIElementLabArray;
//存放文本的标题
@property(nonatomic,retain)NSMutableArray *UIELementLabTitleArray;
//初始化存放所有uilabe的集合。
@property(nonatomic,retain)NSMutableArray *UIElementArray; @end
-(void)InitController{
UserNameField=[UITextField TextFieldWithFrame:CGRectMake(, , , ) target:nil text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentLeft placeHolder:@"" clearMode:UITextFieldViewModeWhileEditing];
UserNameField.borderStyle=UITextBorderStyleRoundedRect;
UserNameField.keyboardType=UIKeyboardTypeNumberPad;
[self.view addSubview:UserNameField];
PassWordField=[UITextField TextFieldWithFrame:CGRectMake(, , , ) target:nil text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentLeft placeHolder:@"" clearMode:UITextFieldViewModeWhileEditing];
PassWordField.borderStyle=UITextBorderStyleRoundedRect;
[self.view addSubview:PassWordField];
yzmField=[UITextField TextFieldWithFrame:CGRectMake(, , , ) target:nil text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentLeft placeHolder:@"" clearMode:UITextFieldViewModeWhileEditing];
yzmField.borderStyle=UITextBorderStyleRoundedRect;
[self.view addSubview:yzmField]; for (int i=; i<; i++) {
UILabel *lb1=[UILabel LabWithFrame:CGRectZero text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentRight font:[UIFont systemFontOfSize:KFont]];
[self.view addSubview:lb1];
[self.UIElementLabArray addObject:lb1];
} }

- (UIImage *) ImageWithColor: (UIColor *) color frame:(CGRect)aFrame
{
UIGraphicsBeginImageContext(aFrame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, aFrame); UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
} - (void)viewDidLoad
{
[super viewDidLoad]; UIImage *image=[self ImageWithColor:[UIColor colorWithRed:/255.0f green:/255.0f blue:/255.0f alpha:] frame:self.view.bounds]; image= [image stretchableImageWithLeftCapWidth:image.size.width*0.5f topCapHeight:image.size.height*0.5f];
UIImageView *imageview=[[UIImageView alloc] initWithImage:image];
[self.view addSubview:imageview]; self.UIElementLabArray=[NSMutableArray array]; CGRect bRect=UIEdgeInsetsInsetRect(self.view.bounds, UIEdgeInsetsMake(KPadding, , KPadding, )); //每一行
CGRect rowRect;
//开始分割每一行
CGRectDivide(bRect, &rowRect, &bRect, KlbHeight, CGRectMinYEdge);
CGRect leftRect,rightRect; //开始分割每一列
CGRectDivide(rowRect, &leftRect, &rightRect, KLbWidth, CGRectMinXEdge); lb=[UILabel LabWithFrame:leftRect text:@"username" textColor:[UIColor blackColor] textAlign:NSTextAlignmentRight font:[UIFont systemFontOfSize:KFont]];
[self.view addSubview:lb]; CGRect txtdiv=UIEdgeInsetsInsetRect(rightRect, UIEdgeInsetsMake(, KPadding, KPadding, ));
UITextField * text=[UITextField TextFieldWithFrame:txtdiv target:self text:@"" textColor:[UIColor blackColor] textAlign:NSTextAlignmentLeft placeHolder:@"input" clearMode:UITextFieldViewModeWhileEditing];
text.borderStyle=UITextBorderStyleRoundedRect;
[self.view addSubview:text]; [self InitController]; }
#pragma mark-UITextField delegate

-(void)textFieldDidEndEditing:(UITextField *)textField{

    //初始化数组
self.UIElementArray=[NSMutableArray array];
self.UIELementLabTitleArray=[NSMutableArray array];
//得到数据
NSArray *data=@[@"UN",@"PD",@"yzm"];
for (int i=;i<data.count;i++) {
NSString *str=data[i];
if([str rangeOfString:@"UN"].location!=NSNotFound){
[self.UIElementArray addObject:UserNameField];//添加文本框的控件
[self.UIELementLabTitleArray addObject:data[i]];//添加对应(lable)的title
}
else if([str rangeOfString:@"PD"].location!=NSNotFound){
[self.UIElementArray addObject:PassWordField];//添加文本框的控件
[self.UIELementLabTitleArray addObject:data[i]];
}
else if([str rangeOfString:@"yzm"].location!=NSNotFound){
[self.UIElementArray addObject:yzmField];//添加文本框的控件
[self.UIELementLabTitleArray addObject:data[i]];
}
}
CGFloat top=lb.bounds.origin.y+lb.bounds.size.height;
CGFloat left=lb.bounds.origin.x;
CGRect rect=UIEdgeInsetsInsetRect(self.view.bounds, UIEdgeInsetsMake(top, left, , ));//开始规划显示控件的Rect
CGRect rowRect; [UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
for (int i=; i<self.UIElementArray.count; i++) { //开始分割每一行,brect每一行的高度
CGRectDivide(rect, &rowRect, &rect,KlbHeight, CGRectMinYEdge); CGRect leftRect,rightRect;//leftRect代表label的rect,right代表textField的rect
//开始分割行中列
CGRectDivide(rowRect, &leftRect, &rightRect, KLbWidth, CGRectMinXEdge);
UILabel *lbt=self.UIElementLabArray[i];
lbt.text=self.UIELementLabTitleArray[i];
lbt.frame=leftRect; //设置每一行的高度
CGRect txtRect=UIEdgeInsetsInsetRect(rightRect, UIEdgeInsetsMake(, KPadding, , KPadding));
UITextField *txt=self.UIElementArray[i];
txt.frame=txtRect; }
[UIView commitAnimations]; [UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:]; [UIView commitAnimations];
} -(BOOL)textFieldShouldClear:(UITextField *)textField{
[UIView animateWithDuration:0.3 animations:^{
for(UILabel *label in self.UIElementLabArray){
label.frame=CGRectZero;
}
for (UITextField *txt in self.UIElementArray) {
txt.frame=CGRectMake(, , ,);
}
}]; return YES;
}
 
 

IOS中文本框输入自动隐藏和自动显示的更多相关文章

  1. 使用jquery实现文本框输入特效:文字逐个显示逐个消失反复循环

    前两天看到某个网站上的输入框有个小特效:文字逐个显示,并且到字符串最大长度后,逐个消失,然后重新循环显示消失,循环显示字符串数组.我对这个小特效有点好奇,于是今天自己尝试用jquery写一个简单的小d ...

  2. 转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果

    是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树. 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题 ...

  3. 转摘:ashx+jquery-autocomplete文本框输入提示功能Asp.net

    引入所需文件 <script type="text/javascript" src="JS/jquery-1.8.2.min.js"></sc ...

  4. 实时监听文本框输入 oninput、onchange与onpropertychange事件的用法和区别

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...

  5. js入门-文本框输入特定内容控制另一个文本框

    在填写表单时,有时需要某些文本框隐藏,当一文本框输入特定内容时才会显示隐藏的文本框,这一功能可以用onchange事件或oninput事件实现.下面对比下两种方法实现的区别: onchange()定义 ...

  6. 监听文本框输入oninput和onpropertychange事件

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onkeydow ...

  7. JS和vue文本框输入改变p标签的内容测试

    文本框输入,p标签的内容自动变成文本框的内容,如下是三种方法的测试: 方法1:JS里的onchange,当文本框内容改变事件,该事件里写的方法是,获取p标签本身,然后获取文本框的值,赋值给变量,最后给 ...

  8. 监听文本框输入开发仿新浪微博限制输入字数的textarea插件

    监听文本框输入 Firefox.Chrome.IE9,IE10 均支持 oninput 事件,此外所有版本的 IE 均支持 onpropertychange 事件. oninput 事件在用户输入.退 ...

  9. 【学习】文本框输入监听事件oninput

    真实项目中遇到的,需求是:一个文本框,一个按钮,当文本框输入内容时,按钮可用,当删除内容时,按钮不可用. 刚开始用的focus和blur, $(".pay-text").focus ...

随机推荐

  1. TextEdit 只能输入数字(0-9)的限制

    MaskType="RegEx" MaskUseAsDisplayFormat="True" Mask="[0-9]*" <dxe:T ...

  2. 转: 使用MinGW + Eclipse CDT进行C++开发的配置方法

    使用MinGW + Eclipse CDT进行C++开发的配置方法 1 2 3 4 5 6 分步阅读 Eclipse作为开源的IDE,可以用来高效开发Java.C++.C等程序.本文介绍如何在Wind ...

  3. Android改动包名称规范方法

    第一步.在项目上右键,选择android tools->rename application package,输入须要改为的名称,然后选择须要替换的文件里的包名.这里仅改动了project中包括 ...

  4. [Canvas]用透明PNG图在背景上画前景能不遮挡背景

    欲看动态效果请点击下载并用Chrome/Firefox浏览器打开index,html. 图例: 从效果可以明显的看到,五角星边缘和中心都没有对背景遮挡. 代码: <!DOCTYPE html&g ...

  5. 转载:Unicode和Utf-8有何区别 转载自知乎 原文作者不详

    作者:于洋链接:https://www.zhihu.com/question/23374078/answer/69732605来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  6. javascript奇技淫巧之位运算符

    奇技淫巧:指过于奇巧而无益还让人着迷的技艺与制品. And(与) & Or(或) | Exclusive Or(异或) 或者称 Xor ^ Not(非) ~ 位运算符,我们在日常js开发中其实 ...

  7. Python 使用pymongo操作mongodb库

    Python 使用pymongo操作mongodb库 2016-12-31 21:55 1115人阅读 评论(0) 收藏 举报  分类: - - - Python(10)  版权声明:本文为博主原创文 ...

  8. 牛客网-《剑指offer》-矩形覆盖

    题目:http://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6 C++ class Solution { public: in ...

  9. webkit webApp 开发技术要点总结[转]

    http://www.cnblogs.com/pifoo/archive/2011/05/28/webkit-webapp.html 如果你是一名前端er,又想在移动设备上开发出自己的应用,那怎么实现 ...

  10. Installing ODIConsole application using weblogic server

    在ODI 创建Java EE Agent时候, 启动Fusion Middleware配置向导创建新域的时候,选择的模板如下,已经包含了 Oracle Data Integrator - Consol ...