当前位置:编程学习 > wap >>

ios7下navigationItem位置问题。

viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"menu_icon.png"] style:UIBarButtonItemStylePlain target:nil action:nil];

在iOS7出来的按钮向右偏了大概20像素。怎么移回去。用CustomerView,设置它的位置也不行。
有没有人有同样的问题? --------------------编程问答-------------------- viewController.navigationItem.leftBarButtonItem可以设置位置吗?CustomerView里的图片应该可以设置位置吧。 --------------------编程问答-------------------- 我也遇到了同样的问题, 暂时还没有解决, 楼主解决了吗? --------------------编程问答--------------------
引用 2 楼 wyz874485227 的回复:
我也遇到了同样的问题, 暂时还没有解决, 楼主解决了吗?

用了customerView,然后btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0),向左移20个像素,但我感觉好山寨,应该还有其他途径的。。。 --------------------编程问答-------------------- self.navigationController.navigationBar.translucent = NO; --------------------编程问答--------------------
引用 3 楼 southbirdfly 的回复:
Quote: 引用 2 楼 wyz874485227 的回复:

我也遇到了同样的问题, 暂时还没有解决, 楼主解决了吗?

用了customerView,然后btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0),向左移20个像素,但我感觉好山寨,应该还有其他途径的。。。


这样实现不了的吧?山寨不山寨先不说,你确定你已经实现了? --------------------编程问答--------------------
引用 5 楼 I_am_not_loser 的回复:
Quote: 引用 3 楼 southbirdfly 的回复:

Quote: 引用 2 楼 wyz874485227 的回复:

我也遇到了同样的问题, 暂时还没有解决, 楼主解决了吗?

用了customerView,然后btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0),向左移20个像素,但我感觉好山寨,应该还有其他途径的。。。


这样实现不了的吧?山寨不山寨先不说,你确定你已经实现了?

已实现,确实可以的。 --------------------编程问答--------------------
引用 6 楼 southbirdfly 的回复:
Quote: 引用 5 楼 I_am_not_loser 的回复:

Quote: 引用 3 楼 southbirdfly 的回复:

Quote: 引用 2 楼 wyz874485227 的回复:

我也遇到了同样的问题, 暂时还没有解决, 楼主解决了吗?

用了customerView,然后btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0),向左移20个像素,但我感觉好山寨,应该还有其他途径的。。。


这样实现不了的吧?山寨不山寨先不说,你确定你已经实现了?

已实现,确实可以的。


整体的代码贴出来看一下嘛 我试了一下好像没有效果额 --------------------编程问答--------------------
引用 7 楼 I_am_not_loser 的回复:
Quote: 引用 6 楼 southbirdfly 的回复:

Quote: 引用 5 楼 I_am_not_loser 的回复:

Quote: 引用 3 楼 southbirdfly 的回复:

Quote: 引用 2 楼 wyz874485227 的回复:

我也遇到了同样的问题, 暂时还没有解决, 楼主解决了吗?

用了customerView,然后btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0),向左移20个像素,但我感觉好山寨,应该还有其他途径的。。。


这样实现不了的吧?山寨不山寨先不说,你确定你已经实现了?

已实现,确实可以的。


整体的代码贴出来看一下嘛 我试了一下好像没有效果额


大概就是下面这样,注意:要用setImage, 不要用setBackgroundImage

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, ITEM_WIDTH, ITEM_HEIGHT)];
[btn addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
[btn setImage:[UIImage imageNamed:@"naviationbar_button_normal.png" ] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"naviationbar_button_pressed.png" ] forState:UIControlStateHighlighted];
btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.leftBarButtonItem = backItem; --------------------编程问答--------------------
引用 8 楼 southbirdfly 的回复:
大概就是下面这样,注意:要用setImage, 不要用setBackgroundImage

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, ITEM_WIDTH, ITEM_HEIGHT)];
[btn addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
[btn setImage:[UIImage imageNamed:@"naviationbar_button_normal.png" ] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"naviationbar_button_pressed.png" ] forState:UIControlStateHighlighted];
btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.leftBarButtonItem = backItem;


 嗯 果然能实现  起初设置了setBackgroundImage的问题 setImage 才对, 细节决定成败。。。 谢了楼主 --------------------编程问答-------------------- UIBarButtonItem *btnPubPost = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"question24"] style:UIBarButtonItemStyleBordered target:self action:@selector(clickPubPost:)];
  self.navigationItem.rightBarButtonItem = btnPubPost;
这样写没有出现位置下移的情况,IOS6和IOS7都没问题 --------------------编程问答-------------------- 那右边这个呢,我右移20个像素不管用,它只把图片压了,位置还是没动
UIButton *userBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 45, 44)];
        [userBtn setImage:[UIImage imageNamed:@"top_navigation_plusicon" ] forState:UIControlStateNormal];
        userBtn.imageEdgeInsets = UIEdgeInsetsMake(0,20, 0, 0);
        UIBarButtonItem *rightBackItem = [[UIBarButtonItem alloc] initWithCustomView:userBtn];
        self.navigationItem.rightBarButtonItem = rightBackItem;
        [rightBackItem release];
        [userBtn release]; --------------------编程问答-------------------- 在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:],它的默认值为UIRectEdgeAll。当你的容器是navigation controller时,默认的布局将从navigation bar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。

修复这个问题的快速方法就是在方法- (void)viewDidLoad中添加如下一行代码:
self.edgesForExtendedLayout = UIRectEdgeNone; --------------------编程问答--------------------
引用 12 楼 kuqideyupian 的回复:
在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:],它的默认值为UIRectEdgeAll。当你的容器是navigation controller时,默认的布局将从navigation bar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。

修复这个问题的快速方法就是在方法- (void)viewDidLoad中添加如下一行代码:
self.edgesForExtendedLayout = UIRectEdgeNone;

你这个跑题了吧 --------------------编程问答--------------------
引用 13 楼 lkw5657 的回复:
Quote: 引用 12 楼 kuqideyupian 的回复:

在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:],它的默认值为UIRectEdgeAll。当你的容器是navigation controller时,默认的布局将从navigation bar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。

修复这个问题的快速方法就是在方法- (void)viewDidLoad中添加如下一行代码:
self.edgesForExtendedLayout = UIRectEdgeNone;

你这个跑题了吧


是的 没注意看....哈哈  --------------------编程问答-------------------- 反正也没人结贴了....就这样吧 我都懒得回答了.....
补充:移动开发 ,  iPhone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,