我有表格视图和自定义单元格。我的自定义单元格有多行标签,因此我必须实现代码来更改标签的高度。我把它放到layoutSubviews上。 但我遇到了麻烦。单元格显示不正确。我开始与NSLog进行交易。 我发现layoutSubviews不是最后调用的(我检查了init方法,layoutSubview,willDisplayCell(表视图委托方法),drawRect和prepareForSegue)。最后一个是drawRect方法。我的解决方案是在drawRect中调用layoutSubviews,这有助于第一次出现表视图。但是,如果我在视图之间切换drawRect方法不再调用,我有相同的错误。如果你愿意,我可以展示截图,但我真的需要你的建议,伙计们。
PS:英语是我的主要麻烦,我知道,抱歉。 :)
答案 0 :(得分:0)
我自己找到了很棒的解决方案。诀窍是在表视图中创建数据源NSArray,其中的图像已经具有圆角。我做了这样的指示:
1.1将QuartzCore框架添加到项目中。
1.2然后为UIImage添加类别。的UIImage + RoundedCorners.h:强>
#import <UIKit/UIKit.h>
@interface UIImage (RoundedCorners)
- (UIImage *)imageWithRoundedCorners:(CGFloat)radius;
@end
1.3 UIImage + RoundedCorners.m:
#import "UIImage+RoundedCorners.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIImage (RoundedCorners)
- (UIImage *)imageWithRoundedCorners:(CGFloat)radius;
{
CALayer *imageLayer = [CALayer layer];
imageLayer.frame = CGRectMake(0, 0, self.size.width, self.size.height);
imageLayer.contents = (id)self.CGImage;
imageLayer.masksToBounds = YES;
imageLayer.cornerRadius = radius;
UIGraphicsBeginImageContext(self.size);
[imageLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return roundedImage;
}
@end
2.1使用您想要使用的图像创建NSArray(NSMutableArray):
_thumbnailImages = [[NSMutableArray alloc] initWithCapacity:[_dishes count]];
for (int counter = 0; counter < [_dishes count]; counter++)
{
EBEntityDish *dish = [_dishes objectAtIndex:counter];
[_thumbnailImages addObject:[dish.image.thumbnailImage imageWithRoundedCorners:IMAGE_CORNER_RADIUS]];
}
2.2注意事项:
IMAGE_CORNER_RADIUS == your image corner radius.
_dishes - My objects that contain images small size (144 x 144)
2.3结果:
My FPS increased on 10 - 20 FPS! Really awesome! Good luck!