2014-04-25 19 views
7

Tôi đang xây dựng một trình soạn thảo ghi chú bằng cách sử dụng Bộ văn bản trong ios7. Trước đó tôi đã gặp khó khăn trong việc hiển thị kích thước tùy chỉnh của NSTextAttachment vì nó đã làm chậm quá trình hiển thị đến một mức độ lớn. Tôi đã giải quyết vấn đề bằng cách mở rộng hình ảnh và sau đó thêm chúng vào textview.Bạn có thể tìm câu trả lời của mình trong iOS 7.0 UITextView gettings terribly slow after adding images to it Sau khi chia tỷ lệ hình ảnh hiển thị textview chạy tốt mà không có bất kỳ lag.The văn bản được phân bổ của textview được lưu trữ trong dữ liệu cốt lõi.During một phiên chạy của ứng dụng textview hiển thị hình ảnh một cách chính xác. Ngay sau khi lưu các văn bản được phân bổ trong dữ liệu cốt lõi và lấy nó một lần nữa để hiển thị trên textview, những hình ảnh trông tốt.Nhưng sau khi giết chết các ứng dụng và một lần nữa chạy các ứng dụng. Các hình ảnh được mở rộng đến 2x kích thước. Trong khi mở rộng hình ảnh tôi sử dụng chức năng sau đây và sử dụng [[UIScreen giới hạn] quy mô] để duy trì chất lượng hình ảnh.iOS 7 UITextView: Kích thước của nstextattachment nhận được 2x sau khi mở lại ứng dụng

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 

    UIGraphicsBeginImageContextWithOptions(newSize, NO, [UIScreen mainScreen].scale); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Nếu tôi chia tỷ lệ hình ảnh thành 1.0 hình ảnh không mở rộng nhưng chất lượng hình ảnh rất xấu.

Tôi nghĩ vấn đề nằm ở đâu? Sự cố nằm trong trình quản lý bố cục.

Những gì tôi đã thử Tôi đã thử subclassing NSLayoutManager và trọng - (void) drawGlyphsForGlyphRange: (NSRange) glyphsToShow atPoint: (CGPoint) nguồn gốc gì tôi thấy là kích thước tập tin đính kèm được tăng gấp đôi khi chạy một phiên mới của ứng dụng.Nếu tôi cố gắng kiểm tra kích thước của tập tin đính kèm và thay đổi kích thước it.The lag bắt đầu đến một lần nữa. Tôi bị mắc kẹt với vấn đề này từ một thời gian khá. Bất kỳ lời đề nghị sẽ được nhiều đánh giá cao. enter image description here enter image description here

+0

Bạn lưu trữ hình ảnh như thế nào? Có thể là kết quả của việc mở rộng quy mô bạn thực hiện, bạn đang sửa đổi hình ảnh gốc trong phần đính kèm và lần sau nó được thu nhỏ lại. Điều gì xảy ra khi bạn chạy ứng dụng lần thứ ba? Ứng dụng biết khi nào không mở rộng hình ảnh? Có lẽ thiết lập một số thuộc tính bổ sung trong tệp đính kèm hình ảnh để cho ứng dụng biết không được chia tỷ lệ hình ảnh. –

+0

1) Tôi đang lưu trữ NSAttributedString hoàn chỉnh bên trong dữ liệu lõi. – nick28

+0

2) Có thể đó là lý do.Các ứng dụng hoạt động giống nhau trên lần chạy thứ ba hoặc sau 3) Từ những gì tôi nhận được các câu hỏi khác là NSTextAttachment mặc định có kích thước của hình ảnh như giới hạn của nó.Điều này đã giúp tôi trong làm một công việc xung quanh và giải quyết nó – nick28

Trả lời

4

Lý do có thể hiển thị võng mạc? Nếu đó là võng mạc, bạn có thể cần phải giảm kích thước xuống 50% trước khi lưu trữ. Làm thế nào về cố gắng này: -

//Original Size that you want to store 
CGSize imageSize = CGSizeMake(320.0f, 320.0f); 

//Make the image 50% of the size for retina 
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&([UIScreen mainScreen].scale == 2.0)) { 
    // Retina display 
    imageSize = CGSizeMake(160.0f, 160.0f); 
} 

UIImage * storeImage = [self imageWithImage:self.image scaledToSize:imageSize] 
//TODO: Store this image locally or whatever you want to do. 
2
@interface MMTextAttachment : NSTextAttachment 
{ 
} 
@end 
@implementation MMTextAttachment 
//I want my emoticon has the same size with line's height 
- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex NS_AVAILABLE_IOS(7_0) 
{ 
return CGRectMake(0 , 0 , lineFrag.size.height , lineFrag.size.height); 
} 
@end 

Tôi nghĩ bạn có thể thử loại này.

Các vấn đề liên quan