解决 UIBarButtonItem 移位问题
来源:互联网 发布:阿里云备案是什么意思 编辑:程序博客网 时间:2024/05/16 11:16
在iOS7 出来混之前,我们的项目里 NavigationBar 很多地方用到个性化的button, 经常会用以下的代码生成一个NavigationBar 中的按钮。
UIButton *button = [UIButton alloc] initWithFrame:...];
[button setImage: ... forState: ...];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView: button];
使用以上的代码,你可以给这个barButton 加任何的图片,在iOS6/5 中运行没有任何问题,但在iOS 7中,这个barButton 会往里靠拢大概 10 个points.
以下代码解决了左边的button 移位问题,大家可以依葫芦画瓢,把右边的方法加上。
#import <UIKit/UIKit.h>
@interface UINavigationItem (Spacing)
@end
-------
#import "UINavigationItem+Spacing.h"
#import <objc/runtime.h>
#import <objc/message.h>
@implementation UINavigationItem (Spacing)
// load 在初始化类时调用,每个类都有一个load 方法,
// 类的初始化先于对象
+(void)load
{
//以下方法告诉系统用后面的方法替换前面的
method_exchangeImplementations(
class_getInstanceMethod(self, @selector(setLeftBarButtonItem:)),
class_getInstaceMethod(self, @selector(mySetLeftBarButtonItem:)));
}
- (UIBarButtonItem *)spacer
{
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil action:nil];
space.width = -10.0f;
return space ;
}
-(void)mySetLeftBarButtonItem:(UIBarButtonItem*)barButton
{
NSArray* barButtons = nil;
barButtons = [NSArray arrayWithObjects: [self spacer], barButton,nil ];
[self setLeftBarButtonItems: barButtons];
}
@end
原文地址: http://weibo.com/p/1001603699748199641394
另外,在github上也看到一个解决方案(与上面的方案没有本质区别):https://github.com/lemonlabs/UINavigationItem-iOS7Spacing
- 解决 UIBarButtonItem 移位问题
- 解决 iOS 7 UIBarButtonItem 在 navigationBar 中移位问题
- 解决iOS7上自定义导航条UIBarButtonItem偏移问题
- 解决IOS7下UIBarButtonItem位置有偏移的问题
- UIBarButtonItem 边缘问题小记
- iOS7新特性-完美解决iOS7关于自定义导航条UIBarButtonItem偏移的问题
- ios7 UIBarButtonItem 边距问题
- UIBarButtonItem
- UIBarButtonItem
- UIBarbuttonItem
- UIBarButtonItem
- UIBarButtonItem随着屏幕切换变化的问题
- 数组循环移位问题
- 移位运算的问题
- 字符串移位包含问题
- 数组循环移位问题
- 关于移位的问题
- 字符串移位包含问题
- 棋牌游戏开发商怎么选择,我给你支招
- Best Time to Buy and Sell Stock
- 二维码扫瞄 ZXingWidget 编译成静态库 使用
- HDU 2019 数列有序!
- 用QTP获取本机硬盘ID
- 解决 UIBarButtonItem 移位问题
- 3005. Conversions
- Eclipse + JSP(HTML)+ Tomcat 开发网页
- HDU 2020 绝对值排序
- Android中实现下拉刷新
- xilinx commond line
- CentOS6.x SecureCRT上传bash: rz: command not found
- android UI适配
- Java中for的几种用法