首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

史上最全的iOS之UITextView实现placeHolder占位文字的N种方法

前言 iOS开发中,UITextField和UITextView是最常用的文本接受类和文本展示类的控件。UITextField和UITextView都输入文本,也都可以监听文本的改变。...图(一) 方法一 1.把UITextView的text属性当成“placeholder”使用。 2.在开始编辑的代理方法里清除“placeholder”。...1.创建textView 2.给textView添加一个UILabel子控件,作为placeholder 3.在文本改变的代理方法里面显示/隐藏UILabel 特点:该方法同样也可以实现类似于placeholder...5.重写相关属性的set方法 特点:这个方法的和方法三很相似,只是没有利用通知来监听文本的改变,需要配合textViewDidChanged:这个文本改变的代理方法使用。...*)text { [super setText:text]; if (text.length) { // 因为是在文本改变的代理方法中判断是否显示placeholder,而通过代码设置

10.7K40

图文混排

它良好的结合了 UIKit 和 Core Graphics/Quartz: UIKit 的 UILabel 允许你通过在 IB 中简单的拖曳添加文本,但你不能改变文本的颜色和其中的单词。...为此,每个文本视图都有一个文本容器,它精确地描述了这个可用的区域。在简单的情况下,这是一个垂直的无限相当大的矩形区域。文本被填充到这个区域,并且文本视图允许用户滚动它。...然而,在更高级的情况下,这个区域可能是一个无限大的矩形。例如,当渲染一本书时,每一页都有最大的高度和宽度。文本容器会定义这个大小,并且不接受任何超出的文本。...相同情况下,一幅图像可能占据了页面的一部分,文本应该沿着它的边缘重新排版。...5、UITextView UITextView作为显示出来的实际的文本视图,在 TextKit 中,文本视图有两个目的:第一,它是文本系统用来绘制的视图。

1.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS坐标系探究

    正文 我们先从一段最简单的代码入手,在drawRect中显示一个普通的UILabel; 为了方便判断,我把整个view的背景设置成黑色: - (void)drawRect:(CGRect)rect {...所以按照UILabel.layer默认的坐标(0, 0),在左上角进行了绘制。 接着,我们尝试使用CoreText来渲染一段文本。...用我们在Windows常用的画图来参考,当我们使用画笔在白板中写字时,图形上下文就是画笔的属性设置、白板大小、画笔位置等等。...通常我们都会使用UIKit进行渲染,所以iOS系统在drawRect返回CGContext的时候,默认帮我们进行了一次变换,以方便开发者直接用UIKit坐标系进行渲染。...iOS可以使用CGContextSaveGState()方法暂存context状态,然后在CoreText绘制完后通过CGContextRestoreGState ()可以恢复context的变换。

    2.8K30

    iOS本地动态验证码生成

    用于ios本地动态生成验证码,效果如下: 导入CoreGraphics.framework 用于绘制图形 封装UIView,便捷使用,代码如下: AuthcodeView.h #import 方法来实现view的绘制     [self setNeedsDisplay]; } - (void)drawRect:(CGRect)rect {     [super drawRect:rect]...; //设置随机背景颜色 self.backgroundColor = kRandomColor; //根据要显示的验证码字符串,根据长度,计算每个字符串显示的位置 NSString...:kFontSize}];     } //调用drawRect:之前,系统会向栈中压入一个CGContextRef,调用UIGraphicsGetCurrentContext()会取栈顶的CGContextRef...; } #pragma mark 输入框代理,点击return 按钮 - (BOOL)textFieldShouldReturn:(UITextField *)textField { //判断输入的是否为验证图片中显示的验证码

    63610

    Quartz2D复习(一)--- 基础知识 绘制线段圆弧 图片水印 截图

    ) drawRect: (CGRect)rect;  方法,然后在这个方法中,可以去的跟当前view相关联的图形上下文; 绘制相应的图形内容(绘制时产生的线条称为路径,路径由一个或多个线段或曲线段组成)...--》 因为在drawRect: 方法中才能取得跟view相关联的图形上下文    drawRect: 方法在什么时候被调用?     ...该属性在一段文本上应用多个属性。如果不指定该属性,则默认为 NSParagraphStyle 的defaultParagraphStyle 方法返回的默认段落属性。...字母紧排的效果依赖于字体。值为 0 表示不使用字母紧排。默认值为0。...0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义。

    2.6K10

    iOS 之 异步绘制原理

    具体过程是系统会把 UIView 显示的内容(包括 UILabel 的文字,UIImageView 的图片等)绘制在一张画布上,完成后倒出图片赋值给 CALayer 的 contents 属性,完成显示...解决方案使用异步绘制就是: 把 UIView 显示的内容(包括 UILabel 的文字,UIImageView 的图片等)绘制生成的 bitmap 在子线程完成。...然后在合适的时机回调代理,调用 drawRect 默认操作是什么都不做(而之所以有这个接口,就是为了让我们在系统绘制之后,还可以做些自定义的绘制工作)。...*)text { _text = text; } - (void)setFont:(UIFont *)font { _font = font; } // 除了在drawRect方法中...(context, 0, size.height); // 原点为左下角 // 文本反转成context坐标系 CGContextScaleCTM(context, 1, -1);

    3.3K30

    六天完成一个简单iOS App - 第二天

    不建议在这里使用。 方法二:自定义button 并且重写layoutSubviews。...如果button是从storyboard或者xib加载会调用aweakfromnib方法,我们可以在aweakFromNib中对控件进行一些统一的设置,在layoutSubviews中设置控件内内容的位置...关于三个button添加约束的方法:可以先设置中间按钮约束,然后约束三个按钮相互之间的间距为0。左边按钮与屏幕左边间距为0,右边按钮与屏幕右边为0,高度相同。最后约束三个按钮平分屏幕宽度。...,然后设置为@" ",这时占位文字的颜色也会设置,然后在将占位文字的内容修改回为空,此时即使我们只设置了占位文字颜色,没有设置占位文字,打印占位文字为null // NSString *oldplaceholder..., id> *)attrs range:(NSRange)range; 一般只要牵扯到显示文字的地方都可以使用富文本来做一些显示的优化,下面我们来看一些使用的实例 图文混排 UILabel *label

    2.1K50

    iOS文本尺寸自适应异步计算实现

    目前市面上的非UI线程文本算高方法或多或少都有一些问题。本文通过逆向和分析UILabel的sizeThatFits方法实现来得到一个最佳的文本算高的精简方法。...方法可以运行在任意线程,因此可以有效的应用在那些异步算高或者要求尺寸进行提前计算的场景中。...下面就是具体的实现代码: /// 使用此方法时请标明源作者:欧阳大哥2013。本方法符合MIT协议规范。.../// @param text 要计算的简单文本NSString或者属性字符串NSAttributedString对象 /// @param numberOfLines 指定最大显示的行数,如果为0则表示不限制最大行数.../// @param font 指定计算时文本的字体,可以为nil表示使用UILabel控件的默认17号字体 /// @param textAlignment 指定文本对齐方式默认是NSTextAlignmentNatural

    1.5K40

    想要漂亮的蒙版指引吗?跟着我手把手的教你写出来

    于是我在 dealloc的方法添加了 Log信息,果然竟然走了 dealloc的方法。 虽然我创建的局部变量,但是我通过 addSubView方法已经添加到试图上面了。...756EDF51-D681-4F3D-92BF-840EEDFA101B 这究竟是怎么个情况,最后在群中得到的答复是我添加在 keyWindow是当时弹出来的 Alert的 注册通知的弹出框。...,左侧5 右侧5 和剪头图片的距离为5 下面不设置自适应 怎么可以形成上图的结果呢 我们可以让文本添加\n 换行符即可。...那是因为如果设置虚线圈,则是镂空,无法出现设计图的效果。我们需要进行绘制,则是用到了 drawRect方法。...还有一点忘记说明,我们可以在父类添加下面方法,用于查找试图对应父类试图所在的中心点位置。

    1.5K20

    UI篇-CATextLayer和 富文本的交融

    在使用中通过将AttributedString赋值给控件的 attributedText 属性来添加文字样式。有属性的控件有UILabel、UITextField和UITextView。...使用方式一 初始化一个NSMutableAttributedString,然后向里面添加文字样式,将其赋给控件的 *attributedText*属性。...赋值, 并利用方法appendAttributedString: 添加入NSMutableAttributedString,将其赋给控件的attributedText属性。...,取值为 NSString 对象,目前只有图版印刷效果可用: //NSAttachmentAttributeName NSTextAttachment 设置文本附件,常用插入图片 //NSLinkAttributeName...在iOS没卵用,不支持竖版 2.设置段落样式:段落样式中允许你设置文字与文字之间的行间距、字符间距、以及对齐模式,但是注意的是,在设置段落样式的时候,必须保证控件的 numberofline属性必须为

    2.6K10

    进度条的实现4. 扇形进度指示器5. 球形指示器

    在这浓浓的鞭炮声中,迎来了这个系列的最后一篇。哈哈~这是多么有纪念意义的春节呀。...用一个UISlider来模拟进度下载,这样可以通过拖动滑杆,感受到下载的过程。 实际开发中的提醒:在实际中,下载进度通常都不会放在主线程上,所以子线程获得下载的进度之后,不要忘记回到主线程刷新UI。...我们这些模拟都是通过滑杆的,所以所有的操作不涉及到多线程。 3. 进度条的实现 进度条我们这里就直接使用了SB的UIProgressView这个控件。...重新进度属性的set方法,为的是给进度赋值的时候可以时时刷新UI,同时用文字Label显示进度的具体数值。...设置扇形的填充模式 [sectorPath fill]; } //重写progress的set方法,可以在赋值的同时给label赋值 - (void)setProgress:(CGFloat

    2.8K30

    iOS开发小技巧:根据文本,字体,计算UILabel高度及宽度

    为了计算UILabel的宽度,除了通过NSString自带的boundingRectWithSize的API外,还可以利用sizeToFit对UILabel封装一个分类。 1....调用示例: 场景:在一个UITableViewCell中,重写Cell的一个模型属性的setter方法,需要先对UILabel对象的text属性赋值后,再进行更新布局约束操作。...options: 文本绘制时的附加选项。可能取值请参考“NSStringDrawingOptions”。 attributes: 文本绘制时用到的AttributedString的属性。...最终,该对象包含的信息将用于文本绘制。该参数一般为 nil 。 返回值: 一个矩形,大小等于文本绘制完将占据的宽和高。 练习题:封装一个根据字体,字符串,宽度等参数得到高度的方法?...关于boundingRectWithSize,系统API有几个类的相关方法。

    5.4K10

    iOS layout相关方法

    假设有个UILabel 添加它距离左边的距离约束为left的constraint 值为 10 现在我们想让它距左边的距离以动画形式改变为100 如果这么做 UIView.animateWithDuration...drawRect在以下情况下会被调用: 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。...drawRect调用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在控制器中,这些View的drawRect就开始画了.这样可以在控制器中设置一些值给...以上1,2推荐;而3,4不提倡 drawRect方法使用注意点: 1、若使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。...2、若使用calayer绘图,只能在drawInContext: 中(类似于drawRect)绘制,或者在delegate中的相应方法绘制。

    1.1K10

    【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    UIViewController 创建完成 , 并开始加载到内存中时 , 在这个时刻执行该 viewDidLoad 方法 //一般情况下 是 在该方法中 执行 初始化数据 , 创建控件 等操作 ; -...设置按钮 禁用 启用 , index 为 1 和 5 时 分别启用 和 禁用 指定的按钮 , 其它情况下可以使用两个按钮 if(self.index == 1){ self.lastButton.enabled...: 使用 NSString 的 stringWithFormat 方法 , 设置一个 字符串格式 , 使用 通配符 进行 数据替换 ; 注意 NSArray 的 count 的通配符是 %lu ;...设置按钮 禁用 启用 , index 为 1 和 5 时 分别启用 和 禁用 指定的按钮 , 其它情况下可以使用两个按钮 if(self.index == 1){ self.lastButton.enabled...一个 UILabel , 并查看 该文件 ; 1.使用文本编辑器查看 : 使用 Subline 文本编辑器查看 Storyboard 界面 , 发现 其本质 是一个 纯文本 的 文件 ; 该方式

    4K40

    Runtime再理解

    2,实例方法存在于类的methodList中,类方法存在于元类的methodList中。 实例对象是类的实例,类对象是元类的实例。...基于以上两点可知,类方法在元类的methodList中是以实例方法的姿态存在的!! 3,Runtime的应用 很多人觉得Runtime很高大上、很难学、很难理解、华而不实。...——消息转发流程 (3)提高OC对象序列化与反序列化的效率:Runtime应用——序列化&反序列化 (4)Hook方法进行代码调试:Runtime应用——在不修改原方法的基础上给原方法添加功能 (5)防止在...一般情况下,如果我们需要在某页面进行页面跳转到另外一个页面,那么就在当前页面使用import引入另一页面的文件,然后新建跳转即可。...(cls);//注册该类 //给跳转页(新建的类)的viewDidload方法添加方法实现 Method method = class_getInstanceMethod

    65120

    iOS文本布局探讨之三——使用TextKit框架进行富文本布局

    iOS文本布局探讨之三——使用TextKit框架进行富文本布局 一、引言         关于图文混排,其实以前的博客已经讨论很多,在实际开发中,经常使用第三方的框架来完成排版的需求,其中RCLabel...二、原生UILabel真的只能渲染文字么?         CoreText是一个比较底层且十分强大的文本渲染框架,但是其使用起来并不是十分方便。在较低版本的iOS系统中,要进行富文本排版十分困难。...在iOS6中,系统为UILabel,UITextView等这类文本渲染控件引入了NSAttributedString属性,有了NSAttributedString这个类,创建灵活多彩的文本控件变得十分轻松...首先,iOS7中新添加了一类NSTextAttachment,从类名理解它是一个文本附件,其实也正是如此,NSTextAttachment类可以向文本中添加一些附件,这有些向邮件系统,寄信者可以向邮件中添加附件一同发送出去...三、为富文本附件添加用户交互能力         TextKit框架强大到只使用UILabel就可以完成复杂的富文本布局,但是UILabel有一个致命的缺陷,其无法进行用户交互。

    2.1K20

    CoreText实现图文混排

    它良好的结合了 UIKit 和 Core Graphics/Quartz: UIKit 的 UILabel 允许你通过在 IB 中简单的拖曳添加文本,但你不能改变文本的颜色和其中的单词。...富文本是什么呢? 富文本格式(RTF)规范是为了便于在应用程序之间轻松转储格式化文本和图形的一种编码方法。...---- 富文本的基本使用方法 诶,标题越来越小了,都4个#号了,说明我扯远了啊。不过要想使用CoreText不会富文本还是不行啊。 来吧。...-initWithString:以NSString初始化一个富文本对象 -setAttributes:range:为富文本中的一段范围添加一些属性,第一个参数是个NSDictionary字典,第二个参数是...;//缩放方法,x轴缩放系数为1,则不变,y轴缩放系数为-1,则相当于以x轴为轴旋转180度 正如之上的背景说的,coreText使用的是系统坐标,然而我们平时所接触的iOS的都是屏幕坐标,所以要将屏幕坐标系转换系统坐标系

    1.8K20
    领券