我的应用似乎布局正确,但是我无法达到iOS 7闻名的模糊半透明效果。矿山看起来不透明。
我正在尝试获得更明显的模糊效果,例如Apple的Trailers应用程序:
在我的UINavigationController子类中,使导航栏为半透明的:
- (id)initWithRootViewController:(UIViewController *)rootViewController
{
if (self = [super initWithRootViewController:rootViewController]) {
self.navigationBar.translucent = YES;
}
return self;
}
在UIApplicationDelegate的子类中,设置导航栏的颜色。我发现色调的alpha值没有区别。也就是说,使用0.1的alpha值不会使该条变得更加半透明。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
}
在我的内容视图控制器中,将边缘设置为,UIRectEdgeNone
这样顶部就不会被导航栏截断。如果使用default UIRectEdgeAll
,导航栏将永久覆盖我内容的顶部。即使我患有这种异常,UIRectEdgeAll
仍然不能启用半透明效果。
- (void) viewDidLoad
{
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeNone;
}
@rmaddy在评论中指出的广告,问题可能出在edgesForExtendedLayout。我找到了一个全面的教程edgeForExtendedLayout并尝试实现它:
- (void) viewDidLoad
{
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeAll;
self.automaticallyAdjustsScrollViewInsets = YES;
self.extendedLayoutIncludesOpaqueBars = NO;
}
它不起作用。首先,没有半透明效果。其次,我的内容的顶部被砍掉了。在下面带有上述代码的示例页面上,头像最初被导航栏覆盖,很难滚动到该头像。您可以往下拉查看化身的顶部,但是放开时,页面会自动弹回,化身将再次被遮盖。
该问题是由第三方下拉至刷新视图EGORefreshTableHeaderView引起的,该视图在iOS 6引入系统刷新控件之前被广泛使用。
该视图使iOS 7感到困惑,使其认为内容比实际的要高。对于iOS 6和7,我有条件地切换为使用UIRefreshControl。现在,导航栏将不会切断我的内容。我可以UIRectEdgeAll
用来使内容进入导航栏的下方。最后,我在导航栏上设置了较低的alpha值以获得半透明效果。
// mostly redundant calls, because they're all default
self.edgesForExtendedLayout = UIRectEdgeAll;
self.automaticallyAdjustsScrollViewInsets = YES;
self.extendedLayoutIncludesOpaqueBars = NO;
[[UINavigationBar appearance] setTintColor:[UIColor colorWithWhite:0.0 alpha:0.5]];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句