更改UITextView的字体颜色

时间:2011-08-20 19:29:39

标签: objective-c cocoa-touch

我有一个UITextView,用户可以在其中输入文字。假设用户已输入值。如何通过单击按钮将已键入的文本和将来键入的文本的字体颜色更改为其他文本?

我已经设置了可以更改文本颜色的位置,但只有在我开始输入之前选择颜色时它才有效。在我开始输入并尝试更改颜色后,它不会执行任何操作。

我有这个:

-(IBAction)changeInkColor:(id)sender
{
    [inkTextField setTextColor:[UIColor greenColor]]; 
    inkTextField.text=@"text";
}

并且实际上只有在视图中没有文本的情况下才会以绿色显示“文本”。但是,如果我输入内容然后点击此按钮,则没有任何反应。

6 个答案:

答案 0 :(得分:23)

我刚试过,我没有遇到任何问题。我设置了一个名为[myTextView setTextColor:[UIColor redColor]];

的按钮

在输入黑色文字颜色后,我按下了按钮,一切都变成了红色。然后我继续打字,都是红色的。

您是否也使用setTextColor:来执行此操作?

答案 1 :(得分:16)

最后,setTextColor:就是答案,早期答案中缺少一个重要的细节:为了让它在iOS 8中运行,我必须设置color = after = I set文本。

因此,

- (void)viewDidLoad
{
    [super viewDidLoad];

    _myTextView.textColor = [UIColor whiteColor];
    _myTextView.text   = @"yadda yadda yadda...";

    // etc., snip

NOT 是否正常工作,而

- (void)viewDidLoad
{
    [super viewDidLoad];

    _myTextView.text   = @"yadda yadda yadda...";
    _myTextView.textColor = [UIColor whiteColor];

    // etc., snip

DID 工作。这让我觉得我是iOS 8中的一个错误,我会写一下。

答案 2 :(得分:1)

您可以通过切换textColor按钮(行中的第6个按钮)来解决IB中的问题(至少在Xcode 8.2中)。选择此按钮后,如果在视图中输入文本之前以编程方式设置textColor,颜色将“粘住”。我还没有找到一种优雅的方法来以编程方式在文本视图中设置它。

UITextView IB settings

但是你也可以在代码中解决这个问题:

textView.text = @" ";
textView.textColor = UIColor.redColor;
textView.text = @"";

答案 3 :(得分:0)

我和你有同样的问题,然后我意识到文字没有改变颜色,默认是红色的,因为我在做:

placeholder = @"Welcome";

而不是

 WelcomeField.text = @"Welcome";

希望有所帮助

答案 4 :(得分:0)

使用UITextField的归属文本

NSAttributedString *string = [[NSAttributedString alloc]initWithString:self.textField.text attributes:@{NSForegroundColorAttributeName:color}];
self.textField.attributedText = string;

答案 5 :(得分:0)

非常有趣,同时

[_nameLabel setTextColor: [UIColor redColor]];

没用,

_nameLabel.textColor = [UIColor redColor]];

工作了。希望对其他人有所帮助。干杯。