iOS学习笔记——基础控件(上)

时间:2022-08-27 20:30:08

本篇简单罗列一下一些常用的UI控件以及它们特有的属性,事件等等。由于是笔记,相比起来不会太详细

UIView

  所有UI控件都继承于这个UIView,它所拥有的属性必是所有控件都拥有,这些属性都是控件最简单最一般的属性。

  • enable:是否启用;
  • selected:是否被选择;
  • contentVerticalAligement:内容是垂直方向的对齐方式,它是一个枚举,分别有UIControlContentVerticalAligementCenter/Top/Bottom/Fill;
  • contentHorizontalAlignment:内容是水平方向的对齐方式,它是一个枚举,UIControlContentHorizontalAligmentCenter/Left/Right/Center;
  • hidden: 显示或者隐藏,BOOL类型;
  • frame:决定控件的大小和位置的结构体,与forstate混用有可能不起作用。

  OC不允许直接修改对象的结构体属性的成员,但可以修改结构体的属性,此时只能先声明另外一个结构体修改结构体里面的值后再对对象的结构体属性重新设值。

  事件操作,这里则介绍如何去以代码的形式给一个控件绑定和解绑事件。

  • 绑定事件:
[myControl addTarget:self action:@selector(myActionmethodName:)  forControlEvents:事件名];
  • 解绑事件:
[myControl removeTarget:self action:@selector(myActionmethodName:) forControlEvents:事件名];

这里如果涉及到多个事件的话,可以用逻辑OR “||”合并在一起。

  • 获得该控件所有注册了事件的方法: NSSet *myActions=[myControl allTargets];
  • 获得该控件所有注册了该事件的方法:NSArray *myActions=[myControl actionForTarget:事件名];

  对于大多数事件的参数,第一个就是触发该事件的控件,类型是id,在用代码绑定事件或者通过storyboard连线的方式绑定事件后,可以把id这个类型换成控件本身的类型,这样在方法内部万一要用回这个控件时就免得进行强制转换了。

  在个事件部分最后搭上一个常用的事件,单击事件 UIControlEventTouchUpInside。

UIButton

按样式去创建按钮,

UIButton *btn= [UIButton buttonWithType:UIButtonTypeRoundedRect];

样式有以下几种

  • UIButtonTypeCustom,自定义的风格;
  • UIButtonTypeRoundRect,白色圆角矩形,这个是默认的;iOS学习笔记——基础控件(上)
  • UIButtonTypeDetailDisclosure:蓝色披露按钮,没有文字;iOS学习笔记——基础控件(上)
  • UIButtonTypeInfolight:微件用的小圆圈信息按钮;iOS学习笔记——基础控件(上)(按钮的底色默认是白色的,页面底色已换成浅蓝色)
  • UIButtonTypeInfoDark:背景下用神社圆圈的按钮;iOS学习笔记——基础控件(上)
  • UIButtonTypeContactAdd:蓝色加号”+“按钮;iOS学习笔记——基础控件(上)

常用的属性:

  • title:按钮的内容;
  • image:按钮的图片;
  • titleColor:按钮内容的颜色;
  • shadowColor:按钮阴影部分的颜色;
  • backgroundImage:按钮的背景图;

以上这些属性的设值方法如下

[btn setTitle:@”Button1” forState:…..];
[btn setImage:[UIImage imageName:@”图片的文件名”] forState:…..];
[btn setTitleColor:[UIColor redColor] forState:…];
[btn setShadowColor:[UIColor redColor] forState:…..];
[bnt setBackgroundImage:[UIImage imageNamed:@”图片文件名”] forState];

  设这类属性都是带了forState,代表了设的这个属性只在某个状态下才会生效,而按钮的状态有下面四个:UIControlstateNormal,UIControlStateHighlighted,UIControlStateDisabled,UIControlSeleted。

  设置按钮的背景色则不需要连带按钮的颜色,只按照原本的属性设置的就可以了:btn.backgroundColor=[UIColor clearColor];

UILabel

  Label是一个很简单很简单的控件了,这里就列举一下它的几个属性

  • text:文本内容;
  • textColor:文本的颜色;
  • textAlignment:水平对齐的方式,由于鄙人学习时是iOS6,在网上找到的很多资料都是早期版本的,不一样的,这个需要分别列举一下,在iOS6以后的版本,这个属性是NSTextAlignment类型;它的值分别是
NSTextAlignmentLeft,
NSTextAlignmentCenter,
NSTextAlignmentRight,
NSTextAlignmentJustified,
NSTextAlignmentNatural

;在iOS5和更早的版本是UITextAligenment,它的值分别是

UITextAlignmentLeft,
UITextAlignmentCenter,
UITextAlignmentRight;
  • lineBreakMode:这个属性比较重要,是控制单词折行方式,它是NSLineBreakMode类型的枚举
   NSLineBreakByWordWrapping, // 以单词为显示单位显示,后面部分省略不显示
NSLineBreakByCharWrapping, // 以字符为显示单位显示,后面部分省略不显示
NSLineBreakByClipping, //剪切与文本宽度相同的内容长度,后半部分被删除。
NSLineBreakByTruncatingHead, //前面部分文字以……方式省略,显示尾部文字内容。
NSLineBreakByTruncatingTail, //结尾部分的内容以……方式省略,显示头的文字内容。
NSLineBreakByTruncatingMiddle//中间的内容以……方式省略,显示头尾的文字内容。 
  • numberOfLines:控制内容是否以多行显示,如果是0则是多行;

UIImageView

  这个是用于图片显示的控件,通过设置image属性来显示那幅图片,在OC中图片则是UIImage类型,这个类型在UIButton部分也出现过,用于设置按钮的图片和按钮的背景图,但是要获取这个图片,这里有三种方式:

  • 本地资源

首先是要往项目里面添加资源:在项目里面的”项目名-Info.plist”文件右键”AddFiles…”将图片资源加入项目中。然后通过下面的代码才能正常获取到图片

UIImage *img=[UIImageimageNamed:@”.jpg”]; 

否则如果单纯拖拽如XCode里面,运行的时候是看不了图片的。

  • 网络
NSURL*url=[NSURLWrithString:@”http://www.baidu.com/img/bdlogo.png”];
UIImage *img=[[UIImage alloc]iniWithData:[NSData dataWithContentsOfURL:url]];
  • 本地文件
NSString *path=[NSStringstringWithFormat:@”%@/Documents/%@.jpg”,NSHomeDirectory,@”test”];
UIImage *img=[[UIImage alloc]initWithContentsOfFile:path];

常用属性

contentMode:图片的显示方式,它是一个枚举类型,

   UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
UIViewContentModeRedraw,
UIViewContentModeCenter,
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,

在以上枚举没带Scale的枚举值,都有一个共同点就是当图片尺寸超出控件的大小时只会显示图片的一部分,超出的部分则不会显示。而有三个枚举也要特别说一下

UIViewContentModeScaleToFill图片会变形(图片的宽高比变了),图片全部会显示在控件中;

iOS学习笔记——基础控件(上)

UIViewContentModeScaleAspectFit:图片的比例不变,尽可能地填充整个控件,以最短一边去填充控件,没填充的部分会有补白;

iOS学习笔记——基础控件(上)

UIViewContentModeScaleAspectFill:图片的比例不变,图片会以最长边去填充控件,会有一部分显示不出来;

iOS学习笔记——基础控件(上)

  • center:空间的中心点位置的属性,可以通过设置这个值来改变控件的位置,此属性是CGPoint类型,可以通过CGPointMake(CGFloat x,CGFloat y);来构造;
  • transform:赋上不同的值,图片会在原有的基础上作不同的变换
  • CGAffineTransformMakeTranslation(CGFloat dx,CGFloat dy);//向分别x,y轴的正方向移动dx,dy个像素;
  • CGAffineTransformMakeRotation(CGFloat angle);//以控件的中心顺时针旋转的angle个弧度;
  • CGAffineTransformMakeScale(CGFloat scale_w,CGFloat scale_h);//按原本宽高分别缩放scale_w和scale_h倍;
  • highlightedImage:控件在高亮状态时显示的图片;
  • highlighted:BOOL类型的属性,控制控件是否在高亮状态

UITextField

这是文本框,相对来说也是一个简单的控件,比UILabel稍复杂一点。

  • text:NSString类型,文本框内的文字内容;
  • placeholder:NSString类型,文本框无内容时会显示在文本框里面的内容;
  • secureTextEntry:BOOL类型,文本框内容是否以密码形式显示;
  • returnKeyType:弹出的软键盘中,回车键的地方显示的键的类型,分别有下面的类型;
   UIReturnKeyDefault,
UIReturnKeyGo,
UIReturnKeyGoogle,
UIReturnKeyJoin,
UIReturnKeyNext,
UIReturnKeyRoute,
UIReturnKeySearch,
UIReturnKeySend,
UIReturnKeyYahoo,
UIReturnKeyDone,
UIReturnKeyEmergencyCall,
  • keyboardType:弹出的软键盘的类型,一共有下面这些类型
   UIKeyboardTypeDefault,
UIKeyboardTypeASCIICapable,
UIKeyboardTypeNumbersAndPunctuation,
UIKeyboardTypeURL,
UIKeyboardTypeNumberPad,
UIKeyboardTypePhonePad,
UIKeyboardTypeNamePhonePad,
UIKeyboardTypeEmailAddress,
UIKeyboardTypeDecimalPad,
UIKeyboardTypeTwitter,
UIKeyboardTypeWebSearch,
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable;
  • clearButtonMode:文本框中显示清除内容的那个叉叉的显示时机

iOS学习笔记——基础控件(上)就是图中红框的地方,这个枚举有以下这些值

   UITextFieldViewModeNever,
UITextFieldViewModeWhileEditing,
UITextFieldViewModeUnlessEditing,
UITextFieldViewModeAlways

方法

如果文本框在编辑状态,软键盘则会弹出来,如果要收起软键盘,则可以调用下面这个方法

[txtBox resignFirstResponder];

事件

对于文本框,编辑前或编辑后都可以触发不同的事件进行操作,也可以在值发生变化时触发事件,下面则列举出来

TextDidBeginEditing;//开始编辑时触发
TextDidEndEditing;//结束编辑时触发
TextDidChange//内容改变时触发

iOS学习笔记——基础控件(上)的更多相关文章

  1. iOS学习之基础控件

    一.UILabel      1.UILabel(标签):是显示文本的空间.在App中UILabel是出现频率最高的控件.      2.UILabel是UIView的子类,作为子类一般是为了扩充父类 ...

  2. IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法

    UITextField控件的诸多特性都和UITextView相似,比如成为输入文本焦点时键盘自动显示,支持长按弹出动作选项,能够接收输入事件(开始输入,修改内容,结束输入和点击回车等). 1.特有的特 ...

  3. IOS 学习笔记(5) 控件 文本视图(UITextView)的使用方法

    相对于UILabell所支持的较短文本内容,UITextView对于长文本的支持更好.UITextView能够以滚动的方式全部浏览到长文本,并且就像UILabel那样,从ISO6,他也提供了对NSAt ...

  4. ios 学习笔记之控件属性

    1.文本框 设置密码属性:Secure Text Entry 勾选; 设置文本框带清除属性: Clear Button =Is always visible;  默认是不带清除属性:Never app ...

  5. IOS 学习笔记(7) 控件 分隔栏控件(UISegmentControl)的使用方法

    分隔栏控件的系统默认式样一共有3种,分别是“普通式样”,"边框式样","条状式样" 分隔栏控件中有一个momentary属性,默认时NO.当开发者配置成YES时 ...

  6. IOS 学习笔记(4) 控件 标签(UILabel)的使用方法

    虽说Label的中文翻译是标签标记,但它其实是一个静态文本内容的展现控件. 一般来说,UILabel只是一个只读的文本视图,开发者可以利用UiLabel来展示内容长度有固定上限的文字内容.并且,UIL ...

  7. ios 学习笔记(8) 控件 按钮(UIButton)的使用方法

    在实际开发中,对于开发者来说,更多的还是使用“自定义”按钮.将“按钮”对象的类型设置成UIButtonTypeCustom.这样一来,按钮的所有元素都将由开发者来配置和自定义. 对于一个自定义按钮来说 ...

  8. iOS学习之UIPickerView控件的关联选择

    接上篇iOS学习之UIPickerView控件的简单使用 接着上篇的代码 http://download.csdn.net/detail/totogo2010/4391870 ,我们要实现的效果如下: ...

  9. Android学习笔记_11_ListView控件使用

    一.界面设计: 1.activity_main.xml文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

随机推荐

  1. HTML标签marquee实现滚动效果

    html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标记不仅可以移动文字,也可以移动图片,表格等.只需要在<ma ...

  2. Android性能优化--Listview优化

    ListView的工作原理 首先来了解一下ListView的工作原理(可参见http://mobile.51cto.com/abased-410889.htm),如图: ListView 针对每个it ...

  3. c&plus;&plus;之路进阶——bzoj3343(教主的魔法)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  gryz2016 Logout 捐赠本站 Notice:由于本OJ ...

  4. VSFTP安全加固

    这几天在公司需要做基线安全,一直都没有经验,所以在网上找了一些,做来参考学习. vsftp配置详解 这里是对vsftp配置文件的详细解释,主要参考了<RedHat8.0网络服务>一书中&l ...

  5. Flask&plus;Mysql搭建网站之其他笔记

    写在前面 之前用过python的另外一个框架,Django.感觉Django比Flask的资料要多.做这个网站的时候,遇到一些棘手的问题,怎么百度也就只能找到翻来覆去的官方文档以及miguelgrin ...

  6. 机器人局部避障的动态窗口法&lpar;dynamic window approach&rpar; (转)

    源:机器人局部避障的动态窗口法(dynamic window approach) 首先在V_m∩V_d的范围内采样速度: allowable_v = generateWindow(robotV, ro ...

  7. 【bzoj 3669】&lbrack;Noi2014&rsqb;魔法森林

    Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...

  8. vue 中样式的绑定

    1.class的对象绑定 //对应的css <style> .active { color: red; } </style> <!--html 对应的代码--> & ...

  9. python字符格式化

    使用%格式化字符串 字符串格式化使用格式化操作符即百分号. 在%号的左侧放置一个字符串(格式化字符串),而右侧则放置希望格式化的值. In [17]: name = "wxz" I ...

  10. 如何在Oracle数据库中查看哪些用户在执行哪些SQL

    对于DBA来说,这是一个非常常见的问题,DBA需要找出以下问题: 1.哪些用户在跑哪些SQL? 2.一个特定的SQL是被哪个用户在执行? 3.一个特定的用户在跑哪些SQL? 从这些问题中可以很明显的看 ...