AVCaptureSessionを使用してカメラの画像をビューのレイヤーにキャプチャするアプリケーションがあります。今度は、ユーザーエクスペリエンスを最適化するためにイメージの上の色が暗い色になっているときに、ステータスバーを白に変更したいと思っています。私は特定のピクセルから色を取得し、そのピクセルの色をテストすることを考えています。そのピクセルだけが別の色になる可能性があるので、それは良い考えではないと思います。では、イメージの上に表示される色に応じてステータスバーの色を変更する最も良い方法は何ですか?ビューのレイヤーの色に応じてステータスバーの色を変更する方法
0
A
答えて
0
はNO
にビューコントローラベースのステータスバーの外観を設定)アプリのInfo.plistファイルが1ステップ 下に後藤の色と設定ステータスバーの色応じたビューを表示し、変更ステータスバーの色の使用を確認します
2)コード
UIView *topView=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)];
topView.backgroundColor=[UIColor blackColor];
[self.window.rootViewController.view addSubview:topView];
+0
ステータスバーを追加するだけでなく、画像の色に合わせてステータスバーの色を更新しようとしています。 –
0
下記の使用を設定するとUIStatusBarStyleLightContent
にステータスバーのスタイルを設定します。この種の問題が最後に発生したときに、任意の画像の上に目に見えるテキストを置くことができました。領域の色を定義するのに最も効果的な正しい方法は、1ピクセルに拡大縮小し、今より良い方法かもしれませんが、これは私たちが苦情をやったことがなかった十分にうまく、あなたは便利なんだどんな画像データバッファ形式に合理的に素直に適応する必要があります:
+ (UIColor *)adaptiveColorWithBackgroundImage:(UIImage *)image forRegion:(CGRect)region
{
region = CGRectMake(region.origin.x * image.scale,
region.origin.y * image.scale,
region.size.width * image.scale,
region.size.height * image.scale);
CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, region);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef scale:image.scale orientation:image.imageOrientation];
CGImageRelease(imageRef);
return [UIColor adaptiveColorWithBackgroundImage:croppedImage];
}
+ (UIColor *)adaptiveColorWithBackgroundImage:(UIImage *)image
{
unsigned char rgb[4] = { 0 };
// trust scaling to come up with best colored pixel
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmap = CGBitmapContextCreate(rgb,1,1,8,4,colorSpace,kCGImageAlphaNoneSkipLast);
CGColorSpaceRelease(colorSpace);
CGContextSetInterpolationQuality(bitmap, kCGInterpolationHigh);
CGContextDrawImage(bitmap, CGRectMake(0,0,1,1), image.CGImage);
CGContextRelease(bitmap);
UIColor *imageColor = [UIColor colorWithRed:rgb[0]/255.f green:rgb[1]/255.f blue:rgb[2]/255.f alpha:1];
UIColor *adaptiveColor = [UIColor adaptiveColorWithBackgroundColor:imageColor];
return adaptiveColor;
}
+ (UIColor *)adaptiveColorWithBackgroundColor:(UIColor *)bkg
{
CGFloat grayComponent = 0.5; // this will default to dark text
CGColorSpaceRef colorSpace = CGColorGetColorSpace(bkg.CGColor);
CGColorSpaceModel colorSpaceModel = CGColorSpaceGetModel(colorSpace);
switch (colorSpaceModel)
{
case kCGColorSpaceModelLab:
{
// Fallthrough... treat the Luminance component the same as grayscale
}
case kCGColorSpaceModelMonochrome:
{
const CGFloat *components = CGColorGetComponents(bkg.CGColor);
grayComponent = components[0];
break;
}
case kCGColorSpaceModelRGB: // convert to grayscale
{
const CGFloat *components = CGColorGetComponents(bkg.CGColor);
grayComponent = (components[0] * 0.3f) + (components[1] * 0.59f) + (components[2] * 0.11f);
break;
}
case kCGColorSpaceModelPattern:
{
unsigned char rgb[4] = { 0 };
// trust scaling to come up with best colored pixel
CGColorSpaceRef colorSpace1 = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmap = CGBitmapContextCreate(rgb,1,1,8,4,colorSpace1,kCGImageAlphaNoneSkipLast);
CGColorSpaceRelease(colorSpace1);
CGContextSetInterpolationQuality(bitmap, kCGInterpolationHigh);
CGContextSetFillColorWithColor(bitmap, [bkg CGColor]);
CGContextFillRect(bitmap, CGRectMake(0,0,1,1));
CGContextRelease(bitmap);
grayComponent = (rgb[0]/255.0f * 0.3f) + (rgb[1]/255.0f * 0.59f) + (rgb[2]/255.0f * 0.11f);
break;
}
default:
{
// unsuported colorspace return default
break;
}
}
// dark background defined as greater than 60% gray
// slightly biased towards white
return (grayComponent <= 0.6) ? UIColor.whiteColor : UIColor.blackColor;
}
関連する問題
- 1. 変更ステータスバーの色
- 2. ステータスバーの色を下の内容に応じて変更してください
- 3. 値の変更に応じてセルの色を変更する方法
- 4. androidステータスバーの色を白とステータスバーアイコンの色をグレーに変更する方法
- 5. WP8銀色のステータスバーの背景色を変更するには?
- 6. ステータスバーの色をプログラムで黒に変更する方法
- 7. ステータスバーの色をプログラムで同じように変更する
- 8. 背景色に応じてテキストの色を変更します/色
- 9. Datamap - 値に応じて色を変更
- 10. ステータスバーの色を変更する
- 11. ステータスバーのデフォルト色を変更する
- 12. ステータスバーの色を変更する
- 13. imagepickercontrollerのステータスバーの色を変更する方法は?
- 14. React Native:ステータスバーのアイコンの色を変更する方法
- 15. 条件に応じてリストビューの行の色を変更する
- 16. 反応ナビゲーションでステータスバーの色を変更します
- 17. CSS - Bootstrap Scrollspy - セクションの背景に応じて色を変更する方法
- 18. Android背景画像に応じてテキストの色を変更する方法
- 19. y値に応じて線の色を変更するggplot2
- 20. 変更ステータスバーのテキストの色primaryDarkが
- 21. デルファイの変更IOSステータスバーの色
- 22. 値に応じてデータテーブルのセルの色を変更します
- 23. 色入力タイプjavesctiptに応じてシェイプの色を変更します。
- 24. Androidはツールバーの色とステータスバーの色を変更しますがステータスバーの色は維持します
- 25. すべての表示ではなく、ビューのステータスバーのナビゲーションバーの黒い色を変更する方法
- 26. ステータスに応じてテキストの色を変更します。
- 27. 値に応じてデータグリッドビュー行の色を変更します。C#
- 28. UIImagePickerControllerビューのUIStatusBarStyleテキストの色を変更する方法
- 29. Eclipse RCPビューのタイトルバーの色を変更する方法
- 30. idに応じてラジオボタンの色を変更したい
あなたはこのスニペットを試してみましたします。https:/ /gist.github.com/dhavaln/d28d026e1a427192f8af?これにより、色を抽出し、その変更に基づいてステータスバーの色を変更することができます。 – Thomas