2014-04-25 6 views
7

मैं आईओएस 7 में टेक्स्ट किट का उपयोग करके एक नोट एडिटर बना रहा हूं। इससे पहले मुझे कस्टम आकार NSTextAttachment के प्रतिपादन में परेशानी थी क्योंकि यह काफी हद तक प्रतिपादन को धीमा कर रहा था। मैंने छवियों को स्केल करके और फिर उन्हें टेक्स्टव्यू में जोड़कर समस्या हल की। ​​आप iOS 7.0 UITextView gettings terribly slow after adding images to it में अपना जवाब पा सकते हैं छवियों को स्केल करने के बाद टेक्स्टव्यू प्रतिपादन बिना किसी अंतराल के ठीक चलाता है। टेक्स्टव्यू का जिम्मेदार पाठ मुख्य डेटा में संग्रहीत होता है। एप्लिकेशन के चल रहे सत्र के दौरान टेक्स्टव्यू छवियों को सही तरीके से प्रदर्शित करता है। मूल डेटा में जिम्मेदार टेक्स्ट को सहेजने के बाद भी इसे प्रदर्शित करने के लिए इसे फिर से प्राप्त करना टेक्स्टव्यू, छवियां ठीक दिखती हैं। लेकिन ऐप को मारने और फिर एप्लिकेशन को चलाने के बाद। छवियों को 2x आकार में बढ़ाया जाता है। इस दौरान छवियों को स्केल करने के बाद मैंने निम्नलिखित फ़ंक्शन का उपयोग किया और छवि गुणवत्ता को बनाए रखने के लिए [[यूआईस्क्रीन सीमा] स्केल] का उपयोग किया।आईओएस 7 यूआईटीएक्स्टव्यू: एप्लिकेशन को दोबारा खोलने के बाद 2x प्राप्त करने के लिए nstextattachment का आकार

- (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) जो मुझे अन्य प्रश्नों को पढ़ रहा है वह यह है कि डिफ़ॉल्ट एनएसटीएक्स्टएचमेंट छवि के आकार को इसकी सीमा के रूप में लेता है। यही वह है जिसने मुझे मदद की चारों ओर एक काम करना और इसे हल करना – 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 

लगता है कि आप इस कोशिश कर सकते हैं।

संबंधित मुद्दे