Tôi đã xem xét và có vẻ như mọi người nói rằng bạn có thể kết xuất lại dữ liệu sau khi bạn phóng to ngay bây giờ mà bạn biết yếu tố tỷ lệ cho UIScrollView. Tôi cũng đã xem một số bài viết về cách tạo lớp của bạn thành CATiledLayer và thiết lập levelsOfDetailBias và levelsOfDetail.Hiển thị nội dung sau khi phóng to cho UIScrollView
gì tôi có là một UIScrollView, và trong đó, một ResultsView mà là một lớp con của 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];
}
Trong lớp học của tôi, nơi tôi có UIScrollView và ResultsView, tôi làm:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.ResultsView;
}
Điều này có đủ để văn bản được hiển thị lại (sắc nét) không? Hoặc tôi có cần thực hiện điều gì đó trong số
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
}
Nếu vậy, tôi không chắc chắn cách thực hiện điều đó. Trong lớp học của tôi với UIScrollView và ResultsView, trong ResultView (trong XIB), tôi chỉ có một vài UILabels và UIViews (UIViews được sử dụng cho tiêu đề/chân trang cho xem). Vì vậy, tôi không biết làm thế nào để vẽ lại những người từ ResultsView. Mặc dù ResultsView có UILabels và UIViews là con của nó trong XIB, tôi không chắc chắn làm thế nào tôi sẽ vẽ lại những người từ lớp ResultsView, và những gì tôi sẽ cần phải làm anyway.
Hoặc đây có phải là cách tiếp cận sai không? Tôi chỉ cần thay đổi kích thước các UILabel và UIView bởi các yếu tố quy mô trong scrollViewDidEndZooming: phương pháp đại biểu? TIA
cảm ơn. Nó hoạt động rất tốt. Tôi không nghĩ mình sẽ tự mình tìm được loại câu trả lời này. Bạn có thể giải thích lý do tại sao bạn cần quy mô dòng đầu tiên * = ... Giá trị cửa sổ/màn hình/thang đo có khác nhau đối với các thiết bị không? Cảm ơn. –
Có, điều đó làm cho màn hình võng mạc tương thích. Trên màn hình iPad và không có màn hình Retina hiển thị iPhone/iPod, tỷ lệ màn hình cửa sổ là 1,0 nên không có hiệu lực. Trên võng mạc hiển thị nó là 2.0 để nó điều chỉnh đúng quy mô cho những màn hình đó. – afarnham
Một cách tiếp cận thậm chí còn sạch hơn có thể là tạo ra khung nhìn bạn đang phóng to một lớp con của UIView (nếu nó chưa được tạo) và tạo một phương thức cho mỗi subview cập nhật trực tiếp contentScaleFactor thay vì lặp qua tất cả các subviews. Nó sẽ cung cấp cho bạn kiểm soát hạt mịn hơn nếu bạn có một số bản xem phụ mà làm bản vẽ tùy chỉnh như bạn sẽ muốn gọi setNeedsDisplay là tốt trên những người. – afarnham