iOS7通知センターでは、ラベル(およびセパレータライン)には非常に興味深い背景があります:ぼかし画像と、ソフトライトブレンドモードのようなものです。iOS 7通知センターのようなラベル
私は何を検索するのか不明です。これがどうやってできるかについての指針は本当に高く評価されます。
これまで、label.textColor = [UIColor colorWithPatternImage:...]
を使用して、ぼやけた画像の一部を背景として設定して、効果を再現しようとしました。これは、背景がすべて黒(または白)で、テキストが判読不能になる場合も考慮しません。
しかし、それはちょうどうまく動作しないようです。このよう
:
は、ここで私が試したものです:
- (void)viewDidLoad
{
[super viewDidLoad];
const CGFloat fontSize = 25.f;
const NSString *text = @"A long-ish string";
CGSize size = [text sizeWithAttributes:@{NSFontAttributeName: [UIFont fontWithName:@"Avenir Next" size:fontSize]}];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(80, 270, size.width, size.height)];
label.font = [UIFont fontWithName:@"Avenir Next" size:fontSize];
label.textAlignment = NSTextAlignmentNatural;
label.backgroundColor = [UIColor clearColor];
label.text = text;
UIImage *image = [UIImage imageNamed:@"[email protected]"];
UIImage *blurredImage = [image applyBlurWithRadius:20.5 tintColor:[UIColor clearColor] saturationDeltaFactor:1.f maskImage:nil];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[blurredImage applyDarkEffect]];
imageView.frame = self.view.bounds;
CGFloat imgScale = image.scale;
CGRect labelFrame = label.frame;
CGRect realRect = CGRectMake(labelFrame.origin.x * imgScale, labelFrame.origin.y * imgScale, labelFrame.size.width * imgScale, labelFrame.size.height * 2.0);
CGImageRef labelPatternImage = CGImageCreateWithImageInRect(image.CGImage, realRect);
label.textColor = [UIColor colorWithPatternImage:[UIImage imageWithCGImage:labelPatternImage scale:2.f orientation:UIImageOrientationUp]];
CGImageRelease(labelPatternImage);
[self.view addSubview:imageView];
[self.view addSubview:label];
}
Code Result http://caughtinflux.com/static/result.png
でこのコードの結果はご覧のように、それは類似していませんNCラベル。
EDIT
できるだけ実際の背景と整列べきテキストのボケ画像の背景。うまくいけば、私のコードのシミュレータのスクリーンショットは、私が言っていることを理解するのに役立ちます。
あなたの2番目のコメントが掲載されました!私はぼかしの前に画像にわずかな白い色合いを付け加えました。それは私が複製しようとしているものにかなり近いものでした。ラベルのtextColorとしてぼかしを設定すると、上のコードのようにうまく動作します。ありがとう!私のコードではイメージを使用していますが、Gregの答えは、iOSで新しいスナップショットAPIを使用して同じものを作成する方法も示しています。 – caughtinflux
スクロールはどうですか? @caughtinflux –
スクロールビューのcontentOffsetに基づいて画像を調整し続ける必要があります – caughtinflux