2014-04-25 7 views
7

ios7의 텍스트 키트를 사용하여 메모 편집기를 작성합니다. 이전에는 맞춤 크기 NSTextAttachment의 렌더링에 큰 어려움을 겪었으므로 렌더링 속도가 느려졌습니다. 이미지 크기를 조정 한 다음 텍스트 뷰에 추가하여 문제를 해결했습니다. 내 대답은 다음에서 찾을 수 있습니다. iOS 7.0 UITextView gettings terribly slow after adding images to it 이미지 크기를 조정 한 후 텍스트 뷰 렌더링은 아무 지연없이 잘 실행됩니다. 텍스트 뷰의 텍스트는 코어 데이터에 저장됩니다. 응용 프로그램의 실행 세션 중에 텍스트 뷰는 이미지를 올바르게 표시합니다. 코어 데이터에 속성이 지정된 텍스트를 저장 한 다음 다시 표시하려면 textview, 이미지는 괜찮아.하지만 애플 리케이션을 죽이고 응용 프로그램을 다시 실행 후. 이미지는 2 배 크기로 확대. 이미지를 스케일링하는 동안 나는 다음과 같은 기능을 사용하고 [UIScreen bounds] 스케일을 사용하여 이미지 품질을 유지했다.iOS 7 UITextView : 응용 프로그램을 다시 연 후 2 배가되는 nstext attachachment의 크기

- (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; 
} 

이미지를 1.0으로 확대하면 이미지가 확장되지 않지만 이미지 품질이 매우 나쁩니다.

문제가있는 곳을 생각하면? 문제는 레이아웃 관리자에 있습니다. 내가 내가 NSLayoutManager를 서브 클래 싱하고 무시하려 한 시도 무엇

- (무효) drawGlyphsForGlyphRange : (NSRange) glyphsToShow atPoint : (CGPoint) 원산지 내가 볼은 첨부 파일 크기 때 두 배입니다 첨부 파일의 크기를 확인하고 크기를 조정하려고하면 응용 프로그램의 새 세션이 실행됩니다. 지연이 다시 시작됩니다. 나는이 문제에 상당히 싫증났다. 모든 제안은 많이 감사 할 것이다. enter image description here enter image description here

+0

어떻게 이미지를 저장하고 있습니까? 크기 조정의 결과로 첨부 파일의 원본 이미지를 수정하고 다음에 다시 크기가 조정될 수도 있습니다. 세 번째로 앱을 실행하면 어떻게됩니까? 이미지의 크기를 조정하지 않을 때 앱에서 어떻게 알 수 있습니까? 이미지 첨부 파일에 몇 가지 추가 속성을 설정하여 앱이 이미지의 크기를 조정하지 않도록 알릴 수 있습니다. –

+0

1) 전체 NSAttributedString을 핵심 데이터 내에 저장합니다. – nick28

+0

2) 그렇습니다. 이유가있을 수 있습니다. 앱이 세 번째 실행에서 또는 이후에 동작합니다. 3) 다른 질문을 읽는 것부터 기본 NSTextAttachment가 이미지의 크기를 경계로 사용한다는 것입니다. 이것이 나를 도왔습니다. 해결 방법을 만들고 해결하는 것 – nick28

답변

4

망막 디스플레이 때문일 수 있습니까? 망막 인 경우 저장하기 전에 크기를 50 % 줄여야 할 수 있습니다. 어떻게 이런 노력에 대해 : - 내가 생각

//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 

이 시도 할 수 있습니다.