私は、画面のサイズにスナップショット画面の制限あなたのようにコード内で画像を生成取ることをお勧めします。また、すべてがコード内にある場合、複雑な操作を管理する方が簡単です。
CGContextDrawImageは、新しい画像の領域に元の画像をコピーするのに役立ちます。
以下は、中央に配置されたテキストと図形(この場合は上の四角い四角形の三角形と名前が中央に配置されている)を含む画像を作成する方法の例です。
// Get font from custom class and create text styles
UIFont *font = [CBFontHelper robotoMedium:32.0f];
NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
paragraphStyle.alignment = NSTextAlignmentCenter;
NSDictionary *textAttributes = @{
NSFontAttributeName: font,
NSForegroundColorAttributeName: [CBColourHelper white],
};
CGSize textSize = [name sizeWithAttributes:textAttributes];
// various bits of paddings and heights neccessary to calculate total image size
float gap = 2.0f;
float textHeight = 0.3f*interfacePadding + textSize.height + 0.3f*interfacePadding;
float width = 200;
float height = textHeight + gap + 2*interfacePadding;
//create new image context
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width,height), false, 0.0f);
// Fill rectangle to hold name
[[CBColourHelper sandstone] setFill];
UIRectFill(CGRectMake(0.0f,0.0f,width,textHeight));
//Draw name over rectangle
[self drawString:name withFont:font inRect:CGRectMake(0.5f*interfacePadding, 0.3f*interfacePadding, width, height)];
// Draw triangle
[[CBColourHelper sandstone] setFill];
UIBezierPath *triangle = [UIBezierPath bezierPath];
[triangle moveToPoint:CGPointMake(width/2,textHeight + gap)];
[triangle addLineToPoint:CGPointMake(width/2,height)];
[triangle addLineToPoint:CGPointMake(width/2+5.0f*interfacePadding,textHeight + gap)];
[triangle closePath];
[triangle fill];
// Get image from context
UIImage *markerImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
広すぎると意見に基づいて – Sulthan
利用可能なオプションとそのメリットについてはどうなりますか?それは意見に基づいているとは言いません。 – StuartM