我在UITextView
内有一个UIViewController
,其中包含一些按钮:其中两个按钮用于缩放UITextView
中包含的文字。 defaultFontSize
初始化了viewDidLoad()
这些按钮与IBAction
相关联......
- (IBAction)zoomIn:(id)sender {
if(defaultFontSize < 60) {
defaultFontSize = defaultFontSize + 2;
[theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];
}
}
/* ... */
- (IBAction)zoomOut:(id)sender {
if(defaultFontSize > 14) {
defaultFontSize = defaultFontSize - 2;
[theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];
}
}
当我第一次显示UIViewController
并点按zoomIn
或zoomOut
按钮时,theContent
中的文字大小不会改变。
更确切地说:调用方法(我已经放了一些日志),但UITextView
字体大小没有更新。
问题:
如果我想要UITextView
的“刷新”,我怎么能(如果可能的话)强行?
当我开始显示UIViewController
时,为什么我的按钮不起作用,但是在“屏幕刷新”后它们工作?
如果你能提供帮助,我将很高兴: - )
答案 0 :(得分:1)
在更改字体大小后立即在UITextView上调用setNeedsLayout。某些方法必须使布局无效(如更改不透明度),这很有意义。更改字体特征不会使布局无效 - 您必须告诉操作系统需要重新布局。
- (IBAction)zoomIn:(id)sender {
if(defaultFontSize < 60) {
defaultFontSize = defaultFontSize + 2;
[theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];
[theContent setNeedsLayout];
}
}
- (IBAction)zoomOut:(id)sender {
if(defaultFontSize > 14) {
defaultFontSize = defaultFontSize - 2;
[theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];
[theContent setNeedsLayout];
}
}
答案 1 :(得分:0)
愚蠢的解决方案诀窍......我将内容保存在临时变量中并重新插入... 并不为此感到骄傲,但它正在发挥作用......
- (IBAction)zoomIn:(id)sender {
if(defaultFontSize < 60) {
NSString *tmpString;
tmpString = theContent.text;
defaultFontSize = defaultFontSize + 2.0;
[theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];
[theContent setText:@""];
[theContent setText:tmpString];
}
}