में इलिप्सिस जोड़ना मेरे पास निम्न कोड है, जिसे मैं कोर टेक्स्ट का उपयोग करके आकर्षित करने की कोशिश कर रहा हूं और यही कारण है कि मैं यूआईएलएबल की तरह टेक्स्ट को क्लिप नहीं कर सकता। दूसरे शब्दों में मुझे अपने स्वयं के इलिप्सिस ('...') को समझना है।एनएसएसटींग
CGSize commentSize = [[self.sizeDictionary_ valueForKey:commentSizeKey] CGSizeValue];
CGSize actualSize = [[self.sizeDictionary_ valueForKey:actualCommentSizeKey] CGSizeValue];
NSString *actualComment = self.highlightItem_.comment;
if (actualSize.height > commentSize.height){
actualComment = [self.highlightItem_.comment stringByReplacingCharactersInRange:NSMakeRange(68, 3) withString:@"..."];
}
मुझे CGSize के आधार पर '...' कहां श्रेणी की एक कठिन समय मिल रही है। इसे समझने का सबसे अच्छा तरीका क्या होगा?
यहाँ कैसे मैं इसे ड्राइंग रहा है:
CFStringRef string = CFBridgingRetain(actualComment);
CFMutableAttributedStringRef comment = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
CFAttributedStringReplaceString (comment ,CFRangeMake(0, 0), string);
CGColorRef blue = CGColorRetain([UIColor colorWithRed:131/255.f green:204/255.f blue:253/255.f alpha:1.0].CGColor);
CGColorRef gray = CGColorRetain([UIColor colorWithWhite:165/255.f alpha:1.0].CGColor);
CFAttributedStringSetAttribute(comment, CFRangeMake(0, [name length]),kCTForegroundColorAttributeName, blue);
CFAttributedStringSetAttribute(comment, CFRangeMake([name length], [self.highlightItem_.comment length] - [name length]),kCTForegroundColorAttributeName, gray);
CGColorRelease (blue);
CGColorRelease (gray);
CTFontRef nameFont = CTFontCreateWithName(CFBridgingRetain(kProximaNovaBold), 13.0f, nil);
CFAttributedStringSetAttribute(comment,CFRangeMake(0, [name length]),kCTFontAttributeName,nameFont);
CTFontRef commentFont = CTFontCreateWithName(CFBridgingRetain(kProximaNovaRegular), 13.0f, nil);
CFAttributedStringSetAttribute(comment, CFRangeMake([name length], [self.highlightItem_.comment length] - [name length]),kCTFontAttributeName,commentFont);
CGFloat commentYOffset = floorf((self.commentHeight_ - commentSize.height)/2);
CGContextSaveGState(context);
CGRect captionFrame = CGRectMake(0, 0, rect.size.width - 80, commentSize.height);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(comment);
CGMutablePathRef captionFramePath = CGPathCreateMutable();
CGPathAddRect(captionFramePath, NULL, captionFrame);
CTFrameRef mainCaptionFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), captionFramePath, NULL);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, self.buttonSize_ + 25, self.imageHeight_ + self.commentHeight_ + 6 - commentYOffset);
CGContextScaleCTM(context, 1.0, -1.0);
CTFrameDraw(mainCaptionFrame, context);
CGContextRestoreGState(context);
के बारे में आप 'NSString drawAtPoint उपयोग कर सकते हैं: forWidth: withFont: lineBreakMode: '(या इसी तरह की) विधि 'ब्रेक मोड' के रूप में' NSLineBreakByTruncatingTail 'गुजर रही है? – rmaddy
@rmaddy मैंने उपरोक्त पोस्ट को यह दिखाने के लिए संपादित किया कि मैं टेक्स्ट कैसे खींच रहा हूं। मैं वास्तव में drawAtPoint – adit
का उपयोग नहीं कर रहा हूं, मुझे पूरा यकीन है कि इलिप्स स्वचालित रूप से करने की सुविधा है, हालांकि मुझे अभी यह नहीं मिल रहा है। (शायद एनएसएफओटी सोच रहा था, लेकिन मुझे वहां नहीं दिख रहा है।) –