ios 简单基础控件创建汇总:UIBUTTON UILabel UITextField UILabel UIscroll

转载自:http://www.cnblogs.com/maxfong/articles/2216180.html http://www.cnblogs.com/wengzilin/archive/2012/03/13/2393985.html http://www.2cto.com/kf/201111/112631.html http://blog.csdn.net/amdbenq/article/details/7866166



UIBUTTON

 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];//初始化button,选择button类型

btn.frame = CGRectMake(30, 360, 90, 35);//大小和位置

[btn setTitle:@"ZoomIn" forState:UIControlStateNormal];//正常状况下button显示的标题

[btn setTitle:@"ZoomIn" forState:UIControlStateHighlighted];//高亮显示时button的标题

[btn addTarget:self action:@selector(zoomInAction:) forControlEvents:UIControlEventTouchUpInside];//button被按下又抬起后发生的事件

//@selector可以理解为"选择子",selector是一个指针变量,类似于sender。 这里是将method的方法指定给新建的这个btn。

/*在 method 方法里可以将 sender 看作是 btn 了 
比如设置btn的hidden属性等等 
btn.hidden = YES; 
这样btn被隐藏了

/*

// 通过背景图片设置按钮高亮

IImage *normalImage = [UIImage imageNamed:@"NormalBlueButton.png"]; 
    UIImage *highlightedImage = [UIImage imageNamed:@"HighlightedBlueButton"];
    self.myButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.myButton.frame = CGRectMake(110.0f,200.0f,100.0f, 37.0f);
    [self.myButton  setBackgroundImage:normalImage forState:UIControlStateNormal];
    [self.myButton setBackgroundImage:highlightedImage  forState:UIControlStateHighlighted];
    [self.myButton setTitle:@"Normal" forState:UIControlStateNormal];

    [self.myButton setTitle:@"Pressed" forState:UIControlStateHighlighted];

//这里创建一个圆角矩形的按钮
02 	    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
03 	     
04 	//    能够定义的button类型有以下6种,
05 	//    typedef enum {
06 	//        UIButtonTypeCustom = 0,          自定义风格
07 	//        UIButtonTypeRoundedRect,         圆角矩形
08 	//        UIButtonTypeDetailDisclosure,    蓝色小箭头按钮,主要做详细说明用
09 	//        UIButtonTypeInfoLight,           亮色感叹号
10 	//        UIButtonTypeInfoDark,            暗色感叹号
11 	//        UIButtonTypeContactAdd,          十字加号按钮
12 	//    } UIButtonType;
13 	     
14 	    //给定button在view上的位置
15 	    button1.frame = CGRectMake(20, 20, 280, 20);
16 	     
17 	    //button背景色
18 	    button1.backgroundColor = [UIColor clearColor];
19 	     
20 	    //设置button填充图片
21 	    //[button1 setImage:[UIImage imageNamed:@"btng.png"] forState:UIControlStateNormal];
22 	     
23 	    //设置button标题
24 	    [button1 setTitle:@"点击" forState:UIControlStateNormal];
25 	     
26 	    /* forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现*/
27 	    //以下是几种状态
28 	//    enum {
29 	//        UIControlStateNormal       = 0,         常规状态显现             
30 	//        UIControlStateHighlighted  = 1 << 0,    高亮状态显现   
31 	//        UIControlStateDisabled     = 1 << 1,    禁用的状态才会显现
32 	//        UIControlStateSelected     = 1 << 2,    选中状态             
33 	//        UIControlStateApplication  = 0x00FF0000, 当应用程序标志时           
34 	//        UIControlStateReserved     = 0xFF000000  为内部框架预留,可以不管他            
35 	//    };
36 	     
37 	    /*
38 	     * 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为no,
39 	     * 那么可以去掉这个功能
40 	    */
41 	    button1.adjustsImageWhenHighlighted = NO;
42 	    /*跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置*/
43 	    button1.adjustsImageWhenDisabled = NO;
44 	    /* 下面的这个属性设置为yes的状态下,按钮按下会发光*/
45 	    button1.showsTouchWhenHighlighted = YES;
46 	     
47 	    /* 给button添加事件,事件有很多种,我会单独开一篇博文介绍它们,下面这个时间的意思是
48 	     按下按钮,并且手指离开屏幕的时候触发这个事件,跟web中的click事件一样。
49 	     触发了这个事件以后,执行butClick:这个方法,addTarget:self 的意思是说,这个方法在本类中
50 	     也可以传入其他类的指针*/
51 	    [button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];
52 	     
53 	     
54 	    //显示控件
55 	    [self.view addSubview:button1];


UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 20.0, 200.0, 50.0)];     

  

    //设置显示文字     

    label1.text = @"label1";     

   

    //设置字体:粗体,正常的是 SystemFontOfSize     

    label1.font = [UIFont boldSystemFontOfSize:20];     

    //设置文字颜色  

    label1.textColor = [UIColor orangeColor];     

   

    //设置文字位置     

    label1.textAlignment = UITextAlignmentRight// UITextAlignmentCenter//UITextAlignmentLeft;     

      

    //设置字体大小适应label宽度     

    label1.adjustsFontSizeToFitWidth = YES;     

 

    //设置label的行数     
    label1.numberOfLines = 2;    

    label1.backgroudColor=[UIColor clearColor]; //可以去掉背景色   

 

    //设置高亮     

    label1.highlighted = YES;     

    label1.highlightedTextColor = [UIColor orangeColor];     

    //设置阴影     

    label1.shadowColor = [UIColor redColor];     

    label1.shadowOffset = CGSizeMake(1.0,1.0);     

    //设置是否能与用户进行交互     

    label1.userInteractionEnabled = YES;     

    //设置label中的文字是否可变,默认值是YES     

    label1.enabled = NO;     

    //设置文字过长时的显示格式     

    label1.lineBreakMode = UILineBreakModeMiddleTruncation;//截去中间     

//  typedef enum {     

//      UILineBreakModeWordWrap = 0,     

//      UILineBreakModeCharacterWrap,     

//      UILineBreakModeClip,//截去多余部分     

//      UILineBreakModeHeadTruncation,//截去头部     

//      UILineBreakModeTailTruncation,//截去尾部     

//      UILineBreakModeMiddleTruncation,//截去中间     

//  } UILineBreakMode;     

    //如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为     

    label1.baselineAdjustment = UIBaselineAdjustmentNone;     

//  typedef enum {     

//      UIBaselineAdjustmentAlignBaselines,     

//      UIBaselineAdjustmentAlignCenters,     

//      UIBaselineAdjustmentNone,     

//  } UIBaselineAdjustment;     

<pre name="code" class="objc">[label1 sizetofit];///label1文本自适应顶置


[self.view addSubview:label1]; [label1 release];
 


     

UITextField的初始化和设置
  textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)]; 
  [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型 
 
  textField.placeholder = @"password"; //默认显示的字 
 
  textField.secureTextEntry = YES; //密码 
 
  textField.autocorrectionType = UITextAutocorrectionTypeNo; 
  textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 
  textField.returnKeyType = UIReturnKeyDone; 
  textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X 
 
  textField.delegate = self;
2.要实现的Delegate方法,关闭键盘
  - (BOOL)textFieldShouldReturn:(UITextField *)textField 
  { 
      [self.textField resignFirstResponder]; 
      return YES; 
  } 
3. 可以在UITextField使用下面方法,按return键返回
-(IBAction) textFieldDone:(id) sender
{
 [textFieldName resignFirstResponder]; 
}
链接TextField控件的"Did end on exit"
最右侧加图片是以下代码,
    UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
    text.rightView=imgv;
    text.rightViewMode = UITextFieldViewModeAlways;    

如果是在最左侧加图片就换成:
text.leftView=imgv;
text.leftViewMode = UITextFieldViewModeAlways;    
UITextField 继承自 UIControl,此类中有一个属性contentVerticalAlignment
所以想让UITextField里面的text垂直居中可以这样写:
text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
查看函数的方法:
按住command键双击进入函数声明
按住alt键双击进入doc文档
///
文本框常用方法:
如何用程序删除文本框中选中的文本
[textView delete: nil];
///
如何限制文本框只能输入数字:
建立NSNumberFormatter的子类,增加这个方法,将formatter链接至文本框。
 
- (BOOL) isPartialStringValid: (NSString **) partialStringPtr
        proposedSelectedRange: (NSRangePointer) proposedSelRangePtr
               originalString: (NSString *) origString
        originalSelectedRange: (NSRange) origSelRange
             errorDescription: (NSString **) error
{
    NSCharacterSet *nonDigits;
    NSRange newStuff;
    NSString *newStuffString;
            
    nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    newStuff = NSMakeRange(origSelRange.location,
                           proposedSelRangePtr->location
                           - origSelRange.location);
    newStuffString = [*partialStringPtr substringWithRange: newStuff];
            
    if ([newStuffString rangeOfCharacterFromSet: nonDigits
                                                                                             options: NSLiteralSearch].location != NSNotFound) {
        *error = @"不是数字";
        return (NO);
    } else {
        *error = nil;
        return (YES);
    }
            
}
///
从文本框获取十六进制数据的代码
char singleNumberString[3] = {'\0','\0','\0'};
uint32_t singleNumber = 0;
uint32_t i = 0;
 NSMutableData *data = [NSMutableData data];
 //从文本框获取到得数据
 const char *buf = [[_hexToSendTextField text] UTF8String];
 //转换为十六进制
 for(i = 0; i < strlen(buf); i+=2)
 {
 if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1])))
 {
 singleNumberString[0] = buf;
 singleNumberString[1] = buf[i+1];
 sscanf(singleNumberString, "%x", &singleNumber);
 [data appendBytes:(void*)(&tmp) length:1];
 }
 else
 {
 break;
 }
 }
 //输出
 NSLog(@"%@", data);
/
点击 UITextView 输入文字,光标都从最初点开始
- (void)textViewDidChangeSelection:(UITextView *)textView
{
    NSRange range;
    range.location = 0;
    range.length = 0;
    textView.selectedRange = range;
}
///
软键盘
在登录页面要实现用户名和密码,密码要是点点格式,引入当前页面光标要停留在用户名选项,软键盘要弹出界面。如下图:
弹出键盘:
[username becomeFirstResponder];
取消键盘:
[username resignFirstResponder];
密码保护:
password.secureTextEntry=YES;
//
1.UITextField的初始化和设置
  textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)]; 
  [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型 
  textField.placeholder = @"password"; //默认显示的字 
  textField.secureTextEntry = YES; //密码 
  textField.autocorrectionType = UITextAutocorrectionTypeNo; 
  textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 
  textField.returnKeyType = UIReturnKeyDone; 
  textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X 
  textField.delegate = self;
2.要实现的Delegate方法,关闭键盘
  - (BOOL)textFieldShouldReturn:(UITextField *)textField 
  { 
      [self.textField resignFirstResponder]; 
      return YES; 
  } 
3. 可以在UITextField使用下面方法,按return键返回
-(IBAction) textFieldDone:(id) sender
{
 [textFieldName resignFirstResponder]; 
}
链接TextField控件的"Did end on exit"

限制输入文本的长度
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (range.location >= MAX_LENGTH)
        return NO; // return NO to not change text
    return YES;
}
if (textField.text.length >= 10 && range.length == 0)
    return NO;
return YES;
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
 if ([textField.text length] > MAXLENGTH) 
 { 
  textField.text = [textField.text substringToIndex:MAXLENGTH-1]; 
  return NO; 
 } 
 return YES; 
} 
//
使用UITextFieldDelegate来隐藏键盘 
在iPhone界面上,时常会需要当用户输入完内容后,隐藏键盘。 当然有很多方法,今天只介绍使用UITextFieldDelegate这个协议实现隐藏键盘。
其实很简单, 需要三步:
1. 在你的控制器类中,加入UITextFieldDelegate这个协议
如:@interface AddItemViewController : UIViewController <UITextFieldDelegate>
2. 在使用了UITextFieldDelegate协议的控制器类的实现中,加入- (BOOL)textFieldShouldReturn:方法。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
 
        [textField resignFirstResponder];
        return YES;
}
 //设置焦点:

[UITextField becomeFirstResponder];

3. 将xib文件中的TextField控件的delegate变量指向到之前使用UITextFieldDelegate协议的那个控制器类,将 TextField的delegate IBOutlet变量右键链接到前面的控制器类的实例上。或者使用代码方式,指定相关TextField的delegate变量。

- (void)viewDidLoad 

{

    [super viewDidLoad];

        itemNameField.delegate = self;

        priceField.delegate = self;

}

复制代码

UISCroll

 (1)初始化

一般的组件初始化都可以alloc和init来初始化,上一段代码初始化。

view plain

UIScrollView *sv  =[[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0,self.view.frame.size.width, 400)]; 

 

 

一般的初始化也都有很多方法,都可以确定组件的Frame,或者一些属性,比如UIButton的初始化可以确定Button的类型。当然,我比较提倡大家用代码来写,这样比较了解整个代码执行的流程,而不是利用IB来弄布局,确实很多人都用IB来布局会省很多时间,但这个因人而异,我比较提倡纯代码写。

 

(2)滚动属性

UIScrollView的最大属性就是可以滚动,那种效果很好看,其实滚动的效果主要的原理是修改他的坐标,准确的讲是修改原点坐标,而UIScrollView跟其他组件的都一样,有自己的delegate,在.h文件中要继承UIScrollView的delegate然后在.m文件的viewDidLoad设置的delegate为self。如下:

 

view plain

sv.pagingEnabled = YES; 

sv.backgroundColor = [UIColor blueColor]; 

sv.showsVerticalScrollIndicator = NO; 

sv.showsHorizontalScrollIndicator = NO; 

sv.delegate = self; 

 

CGSize newSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height); 

[sv setContentSize:newSize]; 

 

[self.view addSubview: sv]; 

 

 

 

在上面的代码中,一定要设置UIScrollView的pagingEnable为YES。不然你就是设置好了其他属性,它还是无法拖动,接下去的分别是设置背景颜色和是否显示水平和竖直拖动条,最后最重要的设置他的ContentSize,ContentSize的意思就是它所有内容的大小,这个和它的Frame是不一样的,只有ContentSize的大小大于Frame这样才可以支持拖动。

 

(3)结合UIPageControl做新闻翻页效果

初始化UIPageControl的方法都很简单,就是上面讲的alloc和init,不过大家要记住的一点就是如果你定义了全局变量一定要在delloc那里释放掉。

 

UIPageControl有一个userInteractionEnabled你可以设置它为NO。就是点击的时候它不调用任何方法。然后设置它的currentPage 为0,并把它加到view上去。

 

接下来在UIScrollView的delegate方法:

view plain

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;   

 

 

在这里你可以写上关于UIPageControl的页面设置的算法。如下

 

view plain

int index = fabs(scrollView.contentOffset.x) /scrollView.frame.size.width; 

 

pageControl.currentPage = index; 

 

 

(4)其他的

UIScrollView还支持处理缩放的动作,比如图片的缩小或者地图。

但是必须实现它的委托viewForZoomingInScrollView:

scrollViewDidEndZooming:withView:atScale:然后它的两个属性maximumZoomScale和minimumZoomScale 要不一样。这样就能基本实现图片的缩放了。

 

好了,今天讲UIScrollView和UIPageControl就到这里咯,希望大家都能理解。欢迎拍砖。

附加一个photo的利用UIScrollView实现的demo给大家: http://up.2cto.com/2011/1130/20111130025112243.zip

 

作者Andy---清风




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值