viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"menu_icon.png"] style:UIBarButtonItemStylePlain target:nil action:nil];在iOS7出来的按钮向右偏了大概20像素。怎么移回去。用CustomerView,设置它的位置也不行。
有没有人有同样的问题?
有没有人有同样的问题?
已实现,确实可以的。
已实现,确实可以的。整体的代码贴出来看一下嘛 我试了一下好像没有效果额
已实现,确实可以的。整体的代码贴出来看一下嘛 我试了一下好像没有效果额大概就是下面这样,注意:要用setImage, 不要用setBackgroundImageUIButton *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;
self.navigationItem.rightBarButtonItem = btnPubPost;
这样写没有出现位置下移的情况,IOS6和IOS7都没问题
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];
self.edgesForExtendedLayout = UIRectEdgeNone;
http://weibo.com/u/2822867275 要用到 Method Swizzling, 什么是MS 我的微博里也有介绍。
无意中看到这个帖子,应该是上移64,而不是44吧
44只是nav的高度....再加上20的通知栏就是64了.....
backButton.frame = CGRectMake(0, 0, 60, 44);
[backButton setImage:[UIImage imageNamed:@"back_btn_bg.png"] forState:UIControlStateNormal];
[backButton setTitle:@"Back" forState:UIControlStateNormal];
[backButton setTitleEdgeInsets:UIEdgeInsetsMake(-1, -55, 0, 0)];
[backButton.titleLabel setFont:[UIFont boldSystemFontOfSize:14.0]];
[backButton setTitleColor:[UIColor colorWithRed:233.0/255.0 green:220.0/255.0 blue:207.0/255.0 alpha:1.0]
forState:UIControlStateNormal];
UIBarButtonItem *backNavigationItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
// 调整 leftBarButtonItem 在 iOS7 下面的位置
if(([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0?20:0)){
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil action:nil];
negativeSpacer.width = -10;
self.navigationItem.leftBarButtonItems = @[negativeSpacer, backNavigationItem];
}else
self.navigationItem.leftBarButtonItem = backNavigationItem;
2. 自己写一个navigationBar
3. 将navigationBar的按钮动作进行设置。
(因为一个navigationBar的视图其实很简单,所以找不到对应的API的话,自己写一个其实是一种效率蛮高的做法,而且后期再遇到类似的问题以更方便解决)