【发布时间】:2010-09-07 16:31:48
【问题描述】:
我有一个带有滚动视图的视图。我使用代码向滚动视图添加标签。由于有很多冗余代码,我尝试将标签创建移动到返回 UILabel 的单独函数中。这是那个函数:
- (UILabel *) f_MakeLabelWithL:(float)MyLeft T:(float)MyTop W:(float)MyWidth H:(float)MyHeight Align:(UITextAlignment)MyAlign
Font:(UIFont *)MyFont TextColor:(UIColor *)MyTextColor BGColor:(UIColor *)MyBGColor {
CGRect rect = CGRectMake(MyLeft, MyTop, MyWidth, MyHeight);
UILabel *label = [[[UILabel alloc] initWithFrame:rect] autorelease];
label.adjustsFontSizeToFitWidth = YES;
label.backgroundColor = MyBGColor;
label.font = MyFont;
label.numberOfLines = 0;
label.textAlignment = MyAlign;
label.textColor = MyTextColor;
return label;
}
我在返回后设置标签的文本。或者我是这么打算的。事实上,被告知具有蓝色背景的标签显示为纯黑色矩形。一个有明确背景的人是完全清楚的。更糟糕的是:scrollview 不会滚动,并且试图让它这样做会使应用程序崩溃,而调试器控制台中没有任何解释。
然而,所有这些代码都可以很好地内联。
有人知道为什么吗?
更新:将代码内联修复了标签的显示。但我也在使用一个函数来创建图像:
- (UIImageView *) f_MakeImageWithL:(float)MyLeft T:(float)MyTop W:(float)MyWidth H:(float)MyHeight File:(NSString *)MyFile {
CGRect rect = CGRectMake(MyLeft, MyTop, MyWidth, MyHeight);
UIImageView *oImageView = [[[UIImageView alloc] initWithFrame:rect] autorelease];
NSString *s = [[Isystant f_DocumentsPath] stringByAppendingPathComponent:MyFile];
UIImage *oImage = [UIImage imageWithContentsOfFile:s];
[oImageView setImage:oImage];
oImageView.backgroundColor = [UIColor redColor];
oImageView.opaque = YES; // explicitly opaque for performance
return oImageView;
}
它正在创建图像,但直到我将这段代码也重新内联后,冻结的滚动/崩溃问题才消失。
【问题讨论】: