任何人都可以解释iOS上的以下观察行为(特别是iOS7):
我有一个自定义的UITableViewCell类。为简单起见,这里是类的相关方法,包括layoutSubviews:
// CustomCell.h
@interface CustomCell : UITableViewCell {
UITextView *textView;
UIImageView *backgroundImage;
}
@property (nonatomic, retain) UITextView *textView;
@property (nonatomic, retain) UIImageView *backgroundImage;
@end
// CustomCell.m
- (void) layoutSubviews
{
[super layoutSubviews];
if (self.message.isIncoming)
{
self.textView.textColor = [UIColor whiteColor];
self.backgroundImage.image = [UIImage imageNamed:@"incomingImage.png"];
}
else
{
self.textView.textColor = [UIColor blackColor];
self.backgroundImage.image = [UIImage imageNamed:@"outgoingImage.png"];
}
}
以下是如何设置:
- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Message *chatMessage = [messages objectAtIndex:indexPath.row];
CustomCell *cell = (CustomCell*)[theTableView dequeueReusableCellWithIdentifier:CELL_IDENTIFIER forIndexPath:indexPath];
[cell setMessage:chatMessage];
return cell;
}
textView和backgroundImage的内容和定位都在其他地方完成,并且在100%的时间内正确完成。
任何人都可以解释我会看到带有whiteText的传入消息但使用outgoingImage背景的情况吗?然后一秒钟后,背景正确更新到incomingImage,用户看到背景更改。
基本上我看到一个单元格在文本正确且textColor正确的地方重复使用,但有时候backgroundImage不正确。我想知道在应用UIImageView的.image属性时是否存在某种延迟?我知道layoutSubviews被调用了,因为如果不是textColor则不正确。它只是UIImageView的图像属性,有时可能不正确或不立即更新。
请注意,textView和backgroundImage都是自定义视图,我已添加为自定义UITableViewCell的contentView的子视图