我环顾四周,看起来人们说你可以在放大之后重新渲染数据,因为你知道UIScrollView的比例因子.我还看过一些关于将你的图层设置为CATiledLayer并设置了levelsOfDetailBias和levelsOfDetail的帖子.
我所拥有的是UIScrollView,其中包含一个结果视图,它是UIView的子类:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
CATiledLayer *tiledLayer = (CATiledLayer *)self.layer;
tiledLayer.levelsOfDetailBias = 3;
tiledLayer.levelsOfDetail = 3;
self.opaque = YES;
}
return self;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
+ (Class)layerClass {
return [CATiledLayer class];
}
Run Code Online (Sandbox Code Playgroud)
在我的类中,我有UIScrollView和ResultsView,我这样做:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.ResultsView;
}
Run Code Online (Sandbox Code Playgroud)
这是否足以使文本重新呈现(尖锐)?或者我需要实现一些东西
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,我不知道该怎么做.在我的带有UIScrollView和ResultsView的类中,在ResultsView(在XIB中)中,我只有几个UILabel和UIViews(UIViews用于视图的标题/页脚).所以我不知道如何从ResultsView重绘它们.虽然ResultsView在XIB中将UILabel和UIViews作为它的子代,但我不确定如何从ResultsView类重绘它们,以及我还需要做什么.
或者这是错误的方法?我只需要通过scrollViewDidEndZooming:delegate方法中的比例因子来调整UILabel和UIView的大小吗?TIA
afa*_*ham 19
我认为你采取了错误的做法.如果您的视图包含不执行任何自定义绘图的UILabel和UIViews,我不会使用CATiledLayer支持的视图.而是实现scrollViewDidEndZooming:withView:atScale:delegate方法并执行以下操作:
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
scale *= [[[self.scrollView window] screen] scale];
[view setContentScaleFactor:scale];
for (UIView *subview in view.subviews) {
[subview setContentScaleFactor:scale];
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4895 次 |
最近记录: |