我在UIView
页面中有以下视图层次结构:
2 UIButtons
1 ImageView
1 UILabel
1 UITableView
- 分组样式 - 仅包含一个单元格(自定义单元格类型,完全使用没有任何xib的代码创建),单元格包含此视图层次结构:
ImageView
2 OHAttributedLabels
[here's its gitHub page]
使用UILabel
方法
CGAffineTransform
我使用:pushViewController
方法在导航控制器上推送此视图的视图控制器,但是,除了第一次打开应用程序的情况,此视图控制器被推入视图时,一切正常瞬间闪烁一次(屏幕边缘有一些黑条),当我导航回应用程序中的其他视图,然后重新打开此视图时,不会发生闪烁。
这种闪烁的原因是什么?
提前谢谢。
P.S。 OHAttributedLabel
在应用程序中的其他视图上进行了测试,没有任何问题。
编辑: 以下代码来自view1.m(我在上面的问题中讨论的视图):
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
UIImage *backgroundImage = [UIImage imageNamed: @"bg1.png"];
UIImageView *backGroundImageView = [[[UIImageView alloc] initWithImage: backgroundImage] autorelease];
backGroundImageView.frame = CGRectMake(0,0,320,411);
[self.view addSubview: backGroundImageView];
[self.view sendSubviewToBack: backGroundImageView];
self.gsTableView.layer.cornerRadius = 10; // to make a the corner of the table view rounded
self.gsParagraphs = [NSArray arrayWithObjects:
NSLocalizedString(@"this is a test string this is a test string this is a test string this is a test string this is a test string this is a test string this is a test string this is a test string this is a test string" , @"test string1"),
NSLocalizedString(@"this is another test string this is another test string this is another test string this is another test string this is another test string this is another test string" , @"test string2"),
nil];
}
以下代码用于view1.m文件中的cellForRowAtIndexPath方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row];
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
}
cell.imageView.image = [UIImage imageNamed: @"gs_1.jpg"];
cell.imageView.layer.masksToBounds = YES;
cell.imageView.layer.cornerRadius = 5.0;
// cell.textLabel.text = [self.gsParagraphs objectAtIndex:0]; //it will become blurry
//note: the attributed label is used to easily apply justified alignment and many other options
NSMutableAttributedString* cellBody1 = [NSMutableAttributedString attributedStringWithString:[self.gsParagraphs objectAtIndex:0]];
[cellBody1 setTextAlignment:UITextAlignmentJustify lineBreakMode: UILineBreakModeWordWrap];
cell.secondTextLabel.attributedText = cellBody1;
NSMutableAttributedString* cellBody2 = [NSMutableAttributedString attributedStringWithString:[self.gsParagraphs objectAtIndex:1]];
[cellBody2 setTextAlignment:UITextAlignmentJustify lineBreakMode: UILineBreakModeWordWrap];
cell.thirdTextLabel.attributedText = cellBody2;
// cell.cellLabelTextYOffset = 10; this is necessary only for the original text label
cell.cellTitle.text = NSLocalizedString(@"Test Title", @"Test Title");
cell.cellTitleLabelWidth = 170;
return cell;
}
没有viewDidAppear方法的代码
答案 0 :(得分:0)
有点不清楚为什么你怀疑你的表视图控制器。表格内的闪烁是什么?
有些嫌疑人:
如果为视图控制器和表委托创建所有委托方法,那么以哪种顺序调用哪些方法?
我不知道它是否仍然有效,但我使用了一个白色按钮来代替单细胞分组表。如果您从未计划添加其他单元格,则几乎不需要使用整个表格。