2010-11-30 5 views
1

私はこの(http://shakeitphoto.com/)アプリケーションがイメージの周りに境界線を置くのが好きです。私はアプリケーションで同様のことをしたいと思いますが、それについてやってみよう。イメージの周りのフレームを達成するにはどうすればいいですか

私はその周りにフレームをラップすることができUIImageを与えられた方法上の任意のアイデア?

+0

人が何かを見たい場合は、画面をポストします。誰も質問が何であるかを見るためだけにアプリをダウンロードするつもりはない。 編集:また、既にスタックオーバーフローに関するこれに関する質問がかなりあります。それらのいくつかをチェックしてください。 –

答えて

2

そのウェブサイトから、あなたが影との国境を望んで表示されます。 2つの妥当なオプションがあります.3つのシャドウについて気にしない場合は3です。

あなたが影を気にしない場合は、あなただけ行うことができます

#import <QuartzCore/QuartzCore.h> // this should be at the top 

// inside your view layout code 
myImageView.layer.borderColor = [UIColor whiteColor].CGColor 
myImageView.layer.borderWidth = 5; 

これはあなたのビューの内容の上に重ねビューに5ピクセル白のボーダーのインセットを、与えるようなもの(画像など)。それがあなたに与えないことは、影です。影が必要な場合は、2つのオプションがあります。

あなただけの境界線と影、そして他には何が含まれる画像を作成することができます。他のすべてをアルファ透明にするだけです。次に、表示したい画像の上にこの画像を重ねることができます(2つの画像ビューを使用するか、または2つの画像ビューから3つ目の画像を作成する)。これは正常に動作するはずですが、異なる画像サイズに拡大されません。リンクされたアプリの場合、画像サイズは常に同じであるため、これを使用することができます。

もう1つの選択肢は、画像の上に境界線と影を新しい画像で単純に描画することです。ここでこれを行いますサンプルコードのビットです - それはあなたのオリジナルと同じサイズの新しいイメージを作成しますが、白で、境界線を影付き:

- (UIImage *)borderedImage:(UIImage *)image { 
    // the following NO means the new image has an alpha channel 
    // If you know the source image is fully-opaque, you may want to set that to YES 
    UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale); 
    [image drawAtPoint:CGPointZero]; 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    const CGFloat shadowRadius = 5; 
    CGContextSetShadowWithColor(ctx, 0, shadowRadius, [UIColor blackColor].CGColor); 
    [[UIColor whiteColor] set]; 
    CGRect rect = (CGRect){CGPointZero, image.size}; 
    const CGFloat frameWidth = 5; 
    rect = CGRectInset(rect, frameWidth/2.0f, frameWidth/2.0f); 
    UIBezierPath *path = [UIBezierPath bezierPathWithRect:rect]; 
    path.lineWidth = frameWidth; 
    [path stroke]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    // note: getting the new image this way throws away the orientation data from the original 
    // You could create a third image by doing something like 
    // newImage = [UIImage imageWithCGImage:newImage.CGImage scale:newImage.scale orientation:image.orientation] 
    // but I am unsure as to how orientation actually affects rendering (if at all) 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

(注意:このコードはコンパイルされていないと含めることができますバグ)

関連する問題