- 浏览: 643821 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lizaochengwen:
网络请求碰到的中文乱码使用encodeURL吧- (NSStr ...
iPhone开发/iPad开发 中文乱码问题 -
hhb19900618:
还是没弄懂怎么解决了中文乱码? 正确代码能重写贴出吗
iPhone开发/iPad开发 中文乱码问题 -
zhengjj_2009:
我的理解是讲ipa文件解压缩之后再重新打包,已经破坏了签名,所 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
zhengjj_2009:
我参考你的“ 从ipa格式的母包生成其它渠道包的shell脚本 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
同一片天空:
问题果然解决了
iOS 搭建 XMPP实现环境
转自http://unmi.cc/uilable-uitextfield-padding-insets 主要是理解下UIEdgeInsets在IOS UI里的意义.
靠,这货其实就是间隔,起个名字这么让人费解!!!正值表示间隔值,负值表示超出参照物的距离。
--------------------------------------------------------分割线,下面是转载原文---------------------------------------------------
iOS 的控件,只看到 UIButton 可以设置 Padding/Insets,即按钮上文字或图片与按钮边界的间隙,对与 CSS 来说叫做 Padding,在 iOS 中叫做 Insets,UIButton 设置 Insets 相应的属性如下:
Configuring Edge Insets
它们接受的属性类型是:UIEdgeInsets,由函数 UIEdgeInsetsMake ( CGFloat top, CGFloat left, CGFloat bottom, CGFloat right ); 构造出,分别表示其中的内容/标题/图片离各边的距离。
在 xib 中也有界面来对按钮的这三个 EdgeInsets 属性的设置,分别是按钮的 Edge 和 Inset 属性。
印像中,Swing 的许多组件都可设置 Insets 属性,可对于 iOS 的控件就没那么幸运了,比如我想设置 UILable 或 UITextField 中的文本离边界的间隙,无伦是在 xib 里还是直接代码的方式都无能为力,因为它们根据未开放相应的属性让你去控制。
办法当然还是有的,自定义相应自己的控件了,比如 InsetsLabel 或是 InsetsTextField,接着就是覆盖某些个方法来达成。
首先来看 UILabel 的子类 InsetsLabel 的实现代码:
关键就是覆盖了 -(void) drawTextInRect: (CGRect) rect; 方法,在画 Label 的文本时分别设置文本与 Label 四个边的间隙,即画在 Label 内的一个小矩形内,这个例子提供了便利的构造函数,提供自己的 UIEdgeInsets 属性。另外,函数 UIEdgeInsetsInsetRect(CGRect, UIEdgeInsets) 应该是好理解的。
再看如何设置 UITextField 中文本到四边的间距,这里也可以定义自己的 InsetsTextField:
效果如下:
上面更像是借鉴的 InsetsLabel 的实现,其实对于 UITextField 还有更好的实现办法,而且更简单,因为 UITextFiled 原来就支持的做法。比如它可以让你做出在文本框最前方固定一个 $ 符号,表示这个文本框是输入钱的,第一个$ 是不能被删除的。确实,你可以在 TextField 上贴个 Label,然后文本框的光标后移,稍显麻烦了。
而 UITextField 可以直接设置 leftView 或 rightView, 然后文本输入区域就在 leftView 和 rightView 之间了,看例子:
它的效果呢就更酷了:
文本框的起始光标是从上图数字 1 位置开始的。
实际应用中,对于 UITextField 如果有类似的需求,我会毫不犹豫的使用 leftView/rightView 属性来设置。
参考:[url]1. http://stackoverflow.com/questions/2694411/text-inset-for-uitextfield[/url]
[url]2. http://stackoverflow.com/questions/5674655/uitextfield-align-left-margin[/url]
本文链接 http://unmi.cc/uilable-uitextfield-padding-insets, 来自 隔叶黄莺 Unmi Blog
靠,这货其实就是间隔,起个名字这么让人费解!!!正值表示间隔值,负值表示超出参照物的距离。
--------------------------------------------------------分割线,下面是转载原文---------------------------------------------------
iOS 的控件,只看到 UIButton 可以设置 Padding/Insets,即按钮上文字或图片与按钮边界的间隙,对与 CSS 来说叫做 Padding,在 iOS 中叫做 Insets,UIButton 设置 Insets 相应的属性如下:
Configuring Edge Insets
contentEdgeInsets property titleEdgeInsets property imageEdgeInsets property
它们接受的属性类型是:UIEdgeInsets,由函数 UIEdgeInsetsMake ( CGFloat top, CGFloat left, CGFloat bottom, CGFloat right ); 构造出,分别表示其中的内容/标题/图片离各边的距离。
在 xib 中也有界面来对按钮的这三个 EdgeInsets 属性的设置,分别是按钮的 Edge 和 Inset 属性。
印像中,Swing 的许多组件都可设置 Insets 属性,可对于 iOS 的控件就没那么幸运了,比如我想设置 UILable 或 UITextField 中的文本离边界的间隙,无伦是在 xib 里还是直接代码的方式都无能为力,因为它们根据未开放相应的属性让你去控制。
办法当然还是有的,自定义相应自己的控件了,比如 InsetsLabel 或是 InsetsTextField,接着就是覆盖某些个方法来达成。
首先来看 UILabel 的子类 InsetsLabel 的实现代码:
//1.header file #import <UIKit/UIKit.h> @interface InsetsLabel : UILabel @property(nonatomic) UIEdgeInsets insets; -(id) initWithFrame:(CGRect)frame andInsets: (UIEdgeInsets) insets; -(id) initWithInsets: (UIEdgeInsets) insets; @end //2. implementation file #import "InsetsLabel.h" @implementation InsetsLabel @synthesize insets=_insets; -(id) initWithFrame:(CGRect)frame andInsets:(UIEdgeInsets)insets { self = [super initWithFrame:frame]; if(self){ self.insets = insets; } return self; } -(id) initWithInsets:(UIEdgeInsets)insets { self = [super init]; if(self){ self.insets = insets; } return self; } -(void) drawTextInRect:(CGRect)rect { return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, self.insets)]; }
关键就是覆盖了 -(void) drawTextInRect: (CGRect) rect; 方法,在画 Label 的文本时分别设置文本与 Label 四个边的间隙,即画在 Label 内的一个小矩形内,这个例子提供了便利的构造函数,提供自己的 UIEdgeInsets 属性。另外,函数 UIEdgeInsetsInsetRect(CGRect, UIEdgeInsets) 应该是好理解的。
再看如何设置 UITextField 中文本到四边的间距,这里也可以定义自己的 InsetsTextField:
// // Created by Unmi on 11/2/11. // Copyright (c) 2011 http://unmi.cc. All rights reserved. // #import <UIKit/UIKit.h> @interface InsetsTextField : UITextField @end @implementation InsetsTextField //控制 placeHolder 的位置,左右缩 20 - (CGRect)textRectForBounds:(CGRect)bounds { return CGRectInset( bounds , 20 , 0 ); } // 控制文本的位置,左右缩 20 - (CGRect)editingRectForBounds:(CGRect)bounds { return CGRectInset( bounds , 20 , 0 ); } @end //----------------------------------------------------------------- //下面是使用 InsetsTextField 的代码,可放在 viewDidLoad 等代理方法中 InsetsTextField *insetTextField = [[InsetsTextField alloc] initWithFrame:CGRectMake(10, 10, 180, 25)]; //须手动设置它的 borderStyle, 不然看不到边框的 insetsTextField.borderStyle = UITextBorderStyleRoundedRect; [self.view addSubview:insetsTextField]; [insetsTextField release];
效果如下:
上面更像是借鉴的 InsetsLabel 的实现,其实对于 UITextField 还有更好的实现办法,而且更简单,因为 UITextFiled 原来就支持的做法。比如它可以让你做出在文本框最前方固定一个 $ 符号,表示这个文本框是输入钱的,第一个$ 是不能被删除的。确实,你可以在 TextField 上贴个 Label,然后文本框的光标后移,稍显麻烦了。
而 UITextField 可以直接设置 leftView 或 rightView, 然后文本输入区域就在 leftView 和 rightView 之间了,看例子:
UILabel *paddingView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 10, 25)]; paddingView.text = @"$"; paddingView.textColor = [UIColor darkGrayColor]; paddingView.backgroundColor = [UIColor clearColor]; textfield.leftView = paddingView; textfield.leftViewMode = UITextFieldViewModeAlways; rightView 也是一样的设置方式,其中的 Mode 有四种,看到名字应该不难理解: UITextFieldViewModeNever, UITextFieldViewModeWhileEditing, UITextFieldViewModeUnlessEditing, UITextFieldViewModeAlways
它的效果呢就更酷了:
文本框的起始光标是从上图数字 1 位置开始的。
实际应用中,对于 UITextField 如果有类似的需求,我会毫不犹豫的使用 leftView/rightView 属性来设置。
参考:[url]1. http://stackoverflow.com/questions/2694411/text-inset-for-uitextfield[/url]
[url]2. http://stackoverflow.com/questions/5674655/uitextfield-align-left-margin[/url]
本文链接 http://unmi.cc/uilable-uitextfield-padding-insets, 来自 隔叶黄莺 Unmi Blog
发表评论
-
SOCK_STREAM和SOCK_DGRAM
2015-07-23 20:08 1566sock_stream 是有保障的(即能保证数据正确传送到 ... -
SOCKET bind INADDR_LOOPBACK和INADDR_ANY的区别
2015-07-23 19:49 2003今天写程序时候,服务器端启动了,然后客户端总是连接不上,con ... -
htons()
2015-07-23 19:26 532在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺 ... -
使用symbolicatecrash分析crash文件
2015-03-10 11:32 1118原文 http://www.cnblogs.com/ning ... -
程序设计中的计算复用(Computational Reuse)
2015-02-10 10:18 607从斐波那契数列说起 ... -
didReceiveMemoryWarning
2015-02-09 16:11 487IPhone下每个app可用的内存是被限制的,如果一个app使 ... -
iOS开发中怎么响应内存警告
2015-02-09 16:08 605好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在 ... -
ASIHTTPRequest多次重复请求的问题
2014-12-17 14:34 590在一个车票订购的项目中,点击一次订购,却生成了2次订单,通过抓 ... -
从 CloudKit 看 BaaS 服务的趋势
2014-09-26 11:51 690从 6 月份 WWDC 苹果发布 ... -
ios编程--AVCapture编程理解
2014-09-26 11:03 8710、媒体采集的几个东西。这里所需要明白的是,在这个流程中,这里 ... -
NSURLProtocol
2014-09-25 10:42 7591、http://nshipster.com/nsurlpro ... -
关于iOS8的extension插件
2014-09-25 10:41 1216关于iOS8的extension插件,有兴趣的同学可以参考一下 ... -
【转】ios app在itunesConnect里面的几种状态
2014-08-05 10:34 1090Waiting for Upload (Yellow) Ap ... -
[转]iOS Dev (45) iOS图标与切片处理工具Prepo
2014-02-07 17:02 987iOS Dev (45) iOS图标与切片处理工具Prepo ... -
phoneGap开发IOS,JS调用IOS方法/phoneGap插件开发
2014-01-13 17:49 1206前沿 废话不说phoneGap是什么不多介绍,官方网站: h ... -
如何在IOS平台下搭建PhoneGap开发环境(PhoneGap2.5)
2014-01-13 15:23 699由于在下最近在做基于HTML5的跨平台移植,搭建环境的时候着实 ... -
xcode 4 制作静态库详解
2013-12-20 18:27 482最近在做Apple的IOS开发,有开发静态库的需求,本身IOS ... -
【翻译】ios教程-创建静态库
2013-12-20 18:19 3010作者:shede333 主页:htt ... -
封装自己的控件库:iPhone静态库的应用
2013-12-20 17:03 510由于iPhone 控件的极度匮乏和自定义组件在重用上的限制,在 ... -
iphone:使用NSFileManager取得目录下所有文件(遍历所有文件)
2013-11-18 17:56 823From:http://note.sdo.com/u/xiao ...
相关推荐
UILabel 和UITextField 的常用api 介绍和使用
该文档详细列出UITextField常用以及不常用的相关属性及如何进行设置,对大家掌握UITextField的用法很有帮助。
UILabel的text设置不同颜色、字体
注册或登录界⾯ UILabel .UITextField
UIButton,UILabel,UITextField做的一个仿造QQ登陆界面的demo
UILabel、UILabel基本用法、UILabel详解,UILabel常用方法
代码中是JSPatch学习笔记的UI基础部分,其中包括以下内容: 1. 项目环境配置 2. 变量 * 局部变量 * 全局变量 ... * UITextField * 文本框内容改变事件监听 * UIAlertView * 弹框 * 监听按钮点击事件
设置UILabel局部点击 根据range来设置label上的字体点击位置 得到相应点击事件
1) 实用型应用模板 2) UIView、UILabel、UITextField、UIButton和UITextView 等基本控件使用 3) iOS位置服务 4) Web Google地图API 5) 本地Google地图API
UILabel 继承于 UIView 里的各种属性和方法使用
在IOS开发中,由于服务器返回的字符串的长度是不固定的,所以不能给UILabel设给固定的大小,要动态的设置UILabel的大小。
下面小编就为大家带来一篇iOS 设置UILabel的行间距并自适应高度的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
UIlabel根据文本、字体获得label宽度;自适应宽高
ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码
UIButton,UILabel文字旋转(倾斜),UIButton,UILabel文字旋转(倾斜)
TextKit 是iOS7新推出的类库,在CoreText 的基础上封装的,主要用来做图文...TextKit 没有新增加类,他就是在原来有的文本显示控件上加以封装,所以我们经常使用的UILabel、UITextField、UITextView在这里都可以使用
UILabel-手写使用手写动画设置 UILabel 文本- ( void )clearAllWritingText;- ( void )setHandwritingText:( NSString *)text color:(UIColor*)textColor animatedWithDuration:( NSTimeInterval )duration ...
简单方便的给UILabel内容中某几个文字添加点击事件,实现定制要求