解决透明NavigationBar底部出现莫名其妙横线问题
2016-03-08 16:42
246 查看
有一个页面要实现透明NavigationBar,实现了之后发现一个奇怪的问题:第一次进入此页面显示透明NavigationBar正常,返回上一级页面再重新进入,NavigationBar的底部出现了一条大约1px的横线,怎么都消除不了。
用Reveal查了一下这个横线,是一个UIImageView,0.5px高度,第一次正常显示的时候center y坐标为63.75,所以显示正常;返回上一级页面时再重新进入,center y坐标为64.25,正好出现在NavigationBar的下面而没有被它覆盖。
猜测是因为要实现透明NavigationBar在其中加了一个64px高度的OverLay View影响了这条横线的位置。最后在这篇文章中找到了解决方法:
First – declare instance variable:
Then, in
Method which finds the image view we need:
And this will do the rest of magic:
Same method should also work for
另一种隐藏横线的方法:
?
参考:
http://stackoverflow.com/questions/19226965/how-to-hide-ios7-uinavigationbar-1px-bottom-line/19227158#19227158 https://github.com/samwize/UINavigationBar-Addition/blob/master/Library/UINavigationBar%2BAddition.m http://jslim.net/blog/2014/02/28/remove-the-1px-shadow-from-uinavigationbar/
用Reveal查了一下这个横线,是一个UIImageView,0.5px高度,第一次正常显示的时候center y坐标为63.75,所以显示正常;返回上一级页面时再重新进入,center y坐标为64.25,正好出现在NavigationBar的下面而没有被它覆盖。
猜测是因为要实现透明NavigationBar在其中加了一个64px高度的OverLay View影响了这条横线的位置。最后在这篇文章中找到了解决方法:
First – declare instance variable:
@implementation MyViewController { UIImageView *navBarHairlineImageView;}
Then, in
viewDidLoaddo:
navBarHairlineImageView = [self findHairlineImageViewUnder:navigationBar];
Method which finds the image view we need:
- (UIImageView *)findHairlineImageViewUnder:(UIView *)view { if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) { return (UIImageView *)view; } for (UIView *subview in view.subviews) { UIImageView *imageView = [self findHairlineImageViewUnder:subview]; if (imageView) { return imageView; } } return nil;}
And this will do the rest of magic:
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; navBarHairlineImageView.hidden = YES;}- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; navBarHairlineImageView.hidden = NO;}
Same method should also work for
UISearchBarhairline.
另一种隐藏横线的方法:
?
http://stackoverflow.com/questions/19226965/how-to-hide-ios7-uinavigationbar-1px-bottom-line/19227158#19227158 https://github.com/samwize/UINavigationBar-Addition/blob/master/Library/UINavigationBar%2BAddition.m http://jslim.net/blog/2014/02/28/remove-the-1px-shadow-from-uinavigationbar/
相关文章推荐
- EXTJS 中 anchor 的用法
- java面向对象之向上转型和向下转型
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
- c++ 组合模式
- 嵌入式面试操作系统部分总结
- 第2周项目 1—宣告主权
- C++输入cout与输出cin
- C++继承中关于子类构造函数的写法
- C++之内部类与外部类(嵌套类)及友元
- C++ 嵌套类使用(三)
- C++ 嵌套类使用(二)
- C++ 嵌套类使用(一)
- std::string::find() 和 std::string::npos
- 关于string::size_type
- #define与typedef
- #define用法详解
- memchr函数
- shutdown()
- C语言strtok()函数:字符串分割
- 细谈select函数(C语言)