创建具有不同颜色和字体的 UITextView 占位符

Posted

技术标签:

【中文标题】创建具有不同颜色和字体的 UITextView 占位符【英文标题】:Creating a UITextView placeholder with different colors and fonts 【发布时间】:2014-10-01 13:40:11 【问题描述】:

为 UITextView 创建占位符的最佳方法是什么,占位符将具有不同的颜色和字体。我想要的一个例子是:

_textView = [[UITextView alloc] initWithFrame:CGRectMake(7.0, 35.0, 306.0, 90.0)];
_textView.text = @"This is a variable called foo.";

我希望文本中的“foo”颜色更粗更深。

如何做到最好?

【问题讨论】:

NSAttributedString? 这可能对你有帮助***.com/questions/11583581/… ***.com/questions/20781506/format-text-in-uitextview 从来不知道 nsattributedstring 【参考方案1】:

我有一个简单的方法。

在下面的UITextView 中添加UILabel 并设置UITextView clearColor。并根据需要设置UILabel 文本并将该文本颜色设置为与您的要求颜色相同。如果你点击 textview 然后隐藏该标签,如果你清除所有 textview 然后显示你的占位符标签。

看这个例子

- (void)textViewDidEndEditing:(UITextView *)theTextView

    if (![textView hasText])
    
        lbl.hidden = NO;
    


- (void) textViewDidChange:(UITextView *)textView

    if(![textView hasText])
    
        lbl.hidden = NO;
    
    else
    
        lbl.hidden = YES;
    
   

我希望这个想法对你有用。

【讨论】:

好主意,谢谢!很遗憾UITextView 不仅仅支持简单的占位符。哦,好吧,这个解决方案效果很好:)【参考方案2】:

您好,有一个简单的解决方案,

使用 GCPlaceholderTextView,您可以在其中设置占位符文本以及颜色和字体。

GCPlaceholderTextView的链接

添加GCPlaceholderTextView.h文件:

@property(nonatomic, strong) UIFont *placeholderFont;

添加GCPlaceholderTextView.m文件:

- (void)setPlaceholderFont:(UIFont *)fontName 
    placeholderFont = fontName;

if ([super.text isEqualToString:self.placeholder]) 
    self.font = placeholderFont;


【讨论】:

【参考方案3】:

您必须制作一个标签并将其添加为您的文本视图的子视图。 然后,在 textview 委托方法中,在适当的时候删除标签,并在 textview 的文本变为 @"" 时重新添加它;

【讨论】:

以上是关于创建具有不同颜色和字体的 UITextView 占位符的主要内容,如果未能解决你的问题,请参考以下文章

具有不同字体大小和颜色的UILabel文本[重复]

UITextView中,能不能单独设置每行文字的字体,颜色,大小

具有相同颜色(不透明度)和不同字体大小的两个文本块出现不同

当文本设置为“属性”时,具有自定义字体的 UITextView 不起作用

quartus怎么自定义代码的字体和颜色

彩色字体字形