【问题标题】:How to consolidating the translucency of the navigation bar between iPhone 5S and 5?iPhone 5S和iPhone 5之间如何巩固导航栏的半透明性?
【发布时间】:2013-12-24 13:05:03
【问题描述】:

我很难在 iPhone 5 和 5S 之间整合 UINavigationBar 的 barTintColor。我的两部手机都是iOS 7。在下面的截图中,顶部是5S,底部是5。iPhone 5S 呈现出非常透明的效果,而iPhone 5 呈现出更微妙的效果。 iPhone 5 的导航栏后面只能看到非常暗的物体。

[[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil]
    setBarTintColor:[UIColor 
        colorWithRed:46.0 / 255.0 
        green:160.0 / 255.0 
        blue:152.0 / 255.0 
        alpha:0.8
    ]
];

我希望这两款手机看起来都像 iPhone 5。如果我将 barTintColor 的 alpha 增加到 1.0,iPhone 5 的导航栏将变得完全不透明。这是预期的结果。虽然 iPhone 5S 的横条会变得不那么透明,但效果还是太强了。如何在不使其完全不透明的情况下进一步降低半透明度?

【问题讨论】:

  • 两台设备都运行iOS7,但它们运行的​​iOS7版本是否相同?对 iOS 7.0.3 进行了更改,并在 iOS 7.1 beta 1 中进行了进一步更改。
  • 5S在7.0.2上。 5 在 iOS 7.0.4 上。我现在就升级5S,看看有没有什么不同。
  • 更新5S会有所作为。
  • 如何在 ios7.1 ios8 的第一张顶部图像上实现模糊效果?我在这里创建了问题stackoverflow.com/questions/29129845/…

标签: ios iphone cocoa-touch ios7 iphone-5


【解决方案1】:

正如 cmets 中所讨论的,您会看到不同的行为,因为其中一台设备使用的是过时的 iOS 7 版本。 Apple 在 7.0.3 版中对条形色调颜色的处理方式进行了更改,现在考虑了 alpha 值。您应该专注于更新版本的 iOS。

【讨论】:

  • 是的,这就是问题所在。在 iOS 7.0.4 中,alpha 值受到尊重。很遗憾每个人都会以不同的方式看待我的应用。
  • 为了给伤害加盐,苹果在 iOS 7.1 beta 中再次修改了算法。我建议您更新您的开发设备之一并使用 7.1 SDK 进行编译,看看您的应用是否仍然看起来不错。
  • 已确认。它在 7.1 中再次更改。真可惜,所以基本上只有少数留在 7.0.3 - 7.0.6 的用户具有“工作”的 alpha 值。
  • wtf...在 7.1 中再次更改...但是为什么???能够设置 alpha 是件好事...
【解决方案2】:

如果您仍想在 IOS 7.1 中为导航栏设置 alpha,我找到了一种解决方法。从设置了 alpha 的颜色创建图像,然后将此图像指定为导航栏的背景:

1- 这是从颜色创建图像的方法:

    -(UIImage *)imageWithColor:(UIColor *)color {
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);

    UIGraphicsBeginImageContext(rect.size);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

我在以下位置找到它:Creating a UIImage from a UIColor to use as a background image for UIButton

//create a colour and set its alpha:

UIColor *colorWithAlpha = [UIColor colorWithRed:(80/255.f) green:(146/255.f) blue:(84/255.f) alpha:0.2]; // light red colour

// create your background image:
UIImage *backgroundImage = [self imageWithColor: colorWithAlpha];

//set this image as a background image:    
[self.navigationController.navigationBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];

self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; // to remove shadow

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多