Ứng dụng của tôi có thể vẽ một số hình đơn giản (cho đến khi tôi nhận được mã ổn định hơn, tôi chỉ dán một hình) và nó cũng có thể tái kích thước chúng. Mã tôi sử dụng để tạo ra một UIView
như sau:UIView Vẽ thực tiễn tốt nhất
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
[self setContextFillColor:context];
[self setContextStrokeColor:context];
[self setLineWidth:context];
CGFloat lineThickness = [self lineWidth] ;
CGFloat halfLineThickess = lineThickness/2.0f;
CGContextAddRect(context, CGRectMake(halfLineThickess,halfLineThickess, rect.size.width - lineThickness, rect.size.height - lineThickness));
CGContextDrawPath(context, kCGPathEOFillStroke);
}
nào mang lại cho tôi, với kích thước đầu vào của (100.0f, 100.0f), điều này:
Con số này là bên trong "vùng chứa" UIView
mà lần lượt nằm trong một số UIScrollView
. Vấn đề của tôi với điều này là khi tôi định lại kích thước của mình và tôi đạt đến kích thước khoảng 1000 * 1000 ("container" của tôi là 20.000 * 20.000), tôi bắt đầu nhận được cảnh báo bộ nhớ và ứng dụng cuối cùng đã từ bỏ. Vì vậy, câu hỏi của tôi là:
1) Tôi có nên cân nhắc đặt kích thước tối đa cho UIView
không?
2) Làm cách nào tôi có thể sử dụng các công cụ để theo dõi loại vấn đề này và xem nơi xảy ra sự cố (hoặc việc nâng hạng nặng).
3) Tôi có nên sử dụng một số loại bộ nhớ đệm như this không?
4) Có một số phương pháp hay nhất thực hành tốt nhất để xem xét khi vẽ một hình ảnh UIView
?
5) Tôi có nên xem xét CALayer
, mặc dù tôi cần phải nghe chạm không?
Việc định lại kích thước của UIView
chủ yếu dựa trên this.
Bạn đã cân nhắc sử dụng QuartzCore và chỉ sử dụng thuộc tính lớp của chế độ xem của bạn để vẽ đường viền? – runmad
Vấn đề là: đây là một hình đơn giản. Cuối cùng tôi sẽ có những người phức tạp hơn, và tôi không nghĩ rằng chơi xung quanh với các thuộc tính của 'UIView' là đủ. Nhưng cảm ơn đề nghị. – Peres
nếu bạn cần vẽ nội dung lớn (có thể với thu phóng), bạn có thể muốn kiểm tra 'CATiledLayer' http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CATiledLayer_class/Introduction/Introduction.html – Bastian