ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正的两种解决方案
来源:互联网 发布:vb.net cad批量打印 编辑:程序博客网 时间:2024/06/02 04:17
方案一:利用UINavigationBar 自带的布局item(Fixed space Bar Button Item)来适配ios7. 其实就是在原来返回按钮的位置上在多加一个占位的Item
为UINavigationBar 写一个分类。UINavigationItem+correct_offset.h
#import
@interface UINavigationItem (correct_offset)
- (void)addLeftBarButtonItem:(UIBarButtonItem *)leftBarButtonItem;
- (void)addRightBarButtonItem:(UIBarButtonItem *)rightBarButtonItem;
@end
#import UINavigationItem+correct_offset.h
#define ios7 ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0?YES:NO)
@implementation UINavigationItem (correct_offset)
- (void)addLeftBarButtonItem:(UIBarButtonItem *)leftBarButtonItem
{
if (ios7) {
// Add a spacer on when running lower than iOS 7.0
UIBarButtonItem *negativeSpacer = [[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil action:nil];
negativeSpacer.width = -20;
[self setLeftBarButtonItems:[NSArrayarrayWithObjects:negativeSpacer, leftBarButtonItem,nil]];
} else {
// Just set the UIBarButtonItem as you would normally
[self setLeftBarButtonItem:leftBarButtonItem];
}
}
- (void)addRightBarButtonItem:(UIBarButtonItem *)rightBarButtonItem
{
if (ios7) {
// Add a spacer on when running lower than iOS 7.0
UIBarButtonItem *negativeSpacer = [[UIBarButtonItemalloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nilaction:nil];
negativeSpacer.width = 10;
[self setRightBarButtonItems:[NSArrayarrayWithObjects:negativeSpacer, rightBarButtonItem,nil]];
} else {
// Just set the UIBarButtonItem as you would normally
[self setRightBarButtonItem:rightBarButtonItem];
}
}
@end
在要设置返回按钮的UIViewController中按照如下使用。
[self.navigationItemaddLeftBarButtonItem:[self creatBarItemWithAction:@selector(dismiss)]];
creatBarItemWithAction是我自己写的一个方法。
/**
* 退出视图。
*/
-(void)dismiss
{
[selfdismissViewControllerAnimated:YEScompletion:nil];
}
/**
* 创建一个UIBarButtonItem
*
* @param _action action
*
* @return UIBarButtonItem
*/
-(UIBarButtonItem*)creatBarItemWithAction:(SEL)_action{
UIButton* button = [UIButtonbuttonWithType:UIButtonTypeCustom];
[button setImage:[UIImageimageNamed:@backButton.png]forState:UIControlStateNormal];
[button setFrame.:CGRectMake(0,0,40, 40)];
[button addTarget:selfaction:_action forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* item = [[UIBarButtonItemalloc] initWithCustomView:button] ;
return item;
}
方式二:在创建自定义UIBarButtonItem的时候通过设置自定义view的图片偏移属性来做适配。
在要设置返回按钮的UIViewController中按照如下使用。
self.navigationItem.leftBarButtonItem = [selfcreatBarItemWithAction:@selector(dismiss)solutiontwo:2];
-(UIBarButtonItem*)creatBarItemWithAction:(SEL)_action solutiontwo:(NSInteger)index{
UIButton* button = [UIButtonbuttonWithType:UIButtonTypeCustom];
[button setImage:[UIImageimageNamed:@backButton.png]forState:UIControlStateNormal];
[button setFrame.:CGRectMake(0,0,40, 40)];
if (ios7) {
[button setImageEdgeInsets:UIEdgeInsetsMake(0, -30,0, 0)];
}
else
{
[button setImageEdgeInsets:UIEdgeInsetsMake(0,0, 0,0)];
}
[button addTarget:selfaction:_action forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* item = [[UIBarButtonItemalloc] initWithCustomView:button] ;
return item;
}
- ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正的两种解决方案
- ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正的两种解决方案
- ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正
- iOS7新特性-完美解决iOS7关于自定义导航条UIBarButtonItem偏移的问题
- iOS7中UIBarButtonItem、UINavigationItem、UINavigationBar、UIToolbar之间的关系
- 解决IOS7下UIBarButtonItem位置有偏移的问题
- 对于UIToolbar,UINavigationBar,UITabBar,UIBarButtonItem,UITabBarItem这几种控件的自定义
- 解决iOS7上自定义导航条UIBarButtonItem偏移问题
- 关于px的纠正
- 自定义UINavigationBar 和 UIBarButtonItem(转)
- ios7 uinavigationbar下面的黑线
- 自定义的UIBarButtonItem
- 关于UIBarButtonItem的自定义
- 移动画刷的偏移纠正
- 百度地图坐标偏移的纠正
- 自定义UINavigationBar的背景
- 自定义UINavigationBar的背景图片
- 自定义UINavigationBar的属性
- android mtk6592 禁止拖动主界面图标
- Java学习笔记之获取当前目录或文件
- 小波变换简介(3)
- 第五章 - 图像形态学 - 基于图像金字塔的图像分割(cvPyrSegmentation)
- 苹果开发者帐号(Company)申请流程
- ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正的两种解决方案
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- 母函数 多项式相乘求系数(HDU 1028)
- Android中Handler的总结(三)实例用户注册
- [Leetcode] Next Permutation
- Android-DirectionalViewPager
- /bin/sed: can't read =xxxx: No such file or directo
- myeclipse 2013 pro创建web Project时,没有web.xml文件
- MSSQL with ties 的理解