我正在使用 iCarousel 来显示可编辑的问题卡。这些卡片包含一个用于输入问题的 UITextView(或者在您刷过填充的卡片时已经包含文本)。但是,当轮播显示并滚动时,有时文本视图会显示为空。
这是由于 UITextView 优化了不在屏幕外绘制文本。但是 UITableView 中的文本视图不会受此影响。
众所周知,由于优化,使用 setNeedsDisplay 将不起作用,因此它不会重绘文本。
我目前通过添加然后删除 1px 来更改文本视图的框架。这会强制重绘。但是,我只能在项目更改时执行此操作。iCarousel 没有 willDisplayCell 委托方法。(尼克,你能轻松添加一个吗?代码让我感到困惑)
因为 iCarousel 为平滑度预加载了许多视图(这是必要的,设置 iCarouselOptionVisibleItems 并不能解决任何问题),我似乎无能为力,但知道视图何时将出现在屏幕上。建议?
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
MIQuestionView *questionView = (MIQuestionView *)view;
if (questionView == nil)
{
MIQuestionType type = [self.testSection.questionType integerValue];
questionView = [[MIQuestionView alloc] initWithFrame:CGRectNull questionType:type];
questionView.delegate = self;
}
questionView.question = [self.testSection.questions objectAtIndex:index];
return questionView;
}
文本视图嵌入在 MIQuestionView 中。文本在问题设置器中设置。我无法知道它何时出现在屏幕上。需要明确的是,我不想调整大小。文本不会在屏幕外绘制,出现在屏幕上时会显示为空白。
抱歉,我没有在上面寻找模棱两可的代码:
- (id)initWithFrame:(CGRect)frame questionType:(MIQuestionType)type
{
if (CGRectEqualToRect(frame, CGRectNull))
frame = CGRectMake(0, 0, 650, 244);
self = [super initWithFrame:frame];
...