在iOS 7的IB中配置的textView在以编程方式更改文本属性后将字体更改回默认字体

时间:2014-01-10 11:26:52

标签: ios storyboard uitextview

注意:我提出这个问题的时间是Apple刚刚发布iOS 7. Apple在iOS 7之后用UITextView重新实现了Text Kit UITextView一些错误的时间。这个问题的问题就是其中之一。但现在已经修好了。


我的应用中有UITextView在IB中配置。文本视图有一些默认文本,其字体大小为60.0f。文本视图使用纯字符串来呈现文本。如果我在应用程序运行时以编程方式更改文本视图的text属性:

self.textView.text = @"some text different from default text";

文本视图会将字体更改回默认字体。

以编程方式配置字体可以解决这个问题:

self.textView.font = [UIFont systemFontOfSize:60.0f];

这是新UITextView的错误。

6 个答案:

答案 0 :(得分:7)

当您取消选中IB中的可选项时,会出现奇怪的行为。 如果选中“可选”,则“文本视图”具有正确的字体。 如果您不想选择它,可以在代码中添加textView.selectable = NO

答案 1 :(得分:1)

您是否注意到字体选项卡右上角的T符号使用此符号来设置字体大小 enter image description here

答案 2 :(得分:0)

首先,如果您通过IB设置字体并在运行时以编程方式在viewdidload方法中设置字体,那么xcode将始终选择以编程方式设置的值。

要以编程方式设置字体,请使用:

[self.textview setFont:[UIFont fontWithName:@"fontname" size:128.0]];

答案 3 :(得分:0)

如果您更改self.textview.text,则必须在此之后设置新的字体和大小。或者,在iOS7 +中,您可以更改self.textview.attributedText,以便您可以先从之前的文本中获取所有属性,然后使用其中一种方法更改NSAttributedString中的文本。之后,您使用结果归因字符串更改self.textview.attributedText。这样做将重用您在IB中指定的所有属性。

答案 4 :(得分:-1)

当iOS 7刚刚由Apple发布时,这是UITextView的错误。它现在已经修好了

答案 5 :(得分:-2)

//  main.m
#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char * argv[])
{
@autoreleasepool {
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"UIDisableLegacyTextView"];

    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}


iOS7 textview有很多bug。

此代码是为了“使用到iOS6 Textview”
但是这段代码不是苹果办公室。