来自UIScrollView的非常奇怪的行为。请检查以下代码
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIScrollView *scrView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
scrView.delegate =self;
[scrView setContentSize:CGSizeMake(95000, self.view.bounds.size.height)];
scrView.backgroundColor = [UIColor clearColor];
Testview *test = [[Testview alloc]initWithFrame:CGRectMake(0, 0, scrView.contentSize.width, self.view.bounds.size.height)];
test.backgroundColor = [UIColor greenColor];
[scrView addSubview:test];
[scrView flashScrollIndicators];
[self.view addSubview:scrView];
self.view.backgroundColor = [UIColor clearColor];
}
Testview是Scrollview的子视图。
@implementation Testview
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
}
在Testview类中,如果我调用方法 - (void)drawRect:(CGRect)rect,Uiscrollview将变为空白,无法在运行时查看scrollview。但是如果我评论drawRect方法
@implementation Testview
//- (void)drawRect:(CGRect)rect {
//
// [super drawRect:rect];
//}
它完美无缺。我正在解决这个问题,请帮助我解决这个问题。如果内容大小宽度和子视图宽度超过95000,我需要drawRect才能工作。
答案 0 :(得分:1)
您的观点对普通-drawRect:
来说太大了。您应该尝试使用CATiledLayer
来支持您的观点。
答案 1 :(得分:0)
回答我的问题。如果我们使用CATiledLayer层,您将能够使用-drawRect:UIVIew,而不考虑给予scrollview的最大宽度子视图。但是每次需要显示一个tile时都会调用-drawRect:方法。这段代码帮助了我。
+ (Class) layerClass
{
return [CATiledLayer class];
}