ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正
为UINavigationBar 写一个分类。UINavigationItem+correct_offset.h
转载 http://www.colabug.com/thread-1112420-1-1.html
#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 = [[ UIBarButtonItem alloc ] initWithBarButtonSystemItem : UIBarButtonSystemItemFixedSpace
target : nil action : nil ];
negativeSpacer. width = - 20 ;
[ self setLeftBarButtonItems :[ NSArray arrayWithObjects :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 = [[ UIBarButtonItem alloc ]
initWithBarButtonSystemItem : UIBarButtonSystemItemFixedSpace
target : nil action : nil ];
negativeSpacer. width = 10 ;
[ self setRightBarButtonItems :[ NSArray arrayWithObjects :negativeSpacer, rightBarButtonItem, nil ]];
} else {
// Just set the UIBarButtonItem as you would normally
[ self setRightBarButtonItem :rightBarButtonItem];
}
}
@end
在要设置返回按钮的UIViewController中按照如下使用。
[ self . navigationItem addLeftBarButtonItem: [ self creatBarItemWithAction : @selector (dismiss)]];
creatBarItemWithAction是我自己写的一个方法。
/**
* 退出视图。
*/
-( void )dismiss
{
[ self dismissViewControllerAnimated : YES completion : nil ];
}
/**
* 创建一个 UIBarButtonItem
*
* @param _action action
*
* @return UIBarButtonItem
*/
-( UIBarButtonItem *)creatBarItemWithAction:( SEL )_action{
UIButton * button = [ UIButton buttonWithType : UIButtonTypeCustom ];
[button setImage :[ UIImage imageNamed : @"backButton.png" ] forState : UIControlStateNormal ];
[button setFrame : CGRectMake ( 0 , 0 , 40 , 40 )];
[button addTarget : self action :_action forControlEvents : UIControlEventTouchUpInside ];
UIBarButtonItem * item = [[ UIBarButtonItem alloc ] initWithCustomView :button] ;
return item;
}
方式二:在创建自定义 UIBarButtonItem 的时候通过设置自定义view的图片偏移属性来做适配。
在要设置返回按钮的UIViewController中按照如下使用。
self . navigationItem . leftBarButtonItem = [ self creatBarItemWithAction : @selector (dismiss) solutiontwo : 2 ];
-( UIBarButtonItem *)creatBarItemWithAction:( SEL )_action solutiontwo:( NSInteger )index{
UIButton * button = [ UIButton buttonWithType : UIButtonTypeCustom ];
[button setImage :[ UIImage imageNamed : @"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 : self action :_action forControlEvents : UIControlEventTouchUpInside ];
UIBarButtonItem * item = [[ UIBarButtonItem alloc ] initWithCustomView :button] ;
return item;
}
ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正的更多相关文章
- IOS7 自定义UIBarButtonItem 的一些问题
ios 下自定义导航栏的BarButtonItem 会产生一些偏移问题, 解决方案: 通过新建一个系统的带固定距离的Item来调节你的Item #define IOS7_NAVI_SPACE ...
- iOS开发备忘录:自定义UINavigationBar背景图片和Back按钮
iOS项目,根据设计图,有时需要自定义UIView的UINavigationBar的背景.可以切出来一张1像素左右的背景图片,来充当UINavigationBar的背景. 可以利用Navigation ...
- iOS7自定义back按钮和pop交互手势
Clambake for iPhone有一个回退按钮在所有的导航条上.这是一个简单的没有文字箭头. 实现一个自定义按钮是简单的.类似这个设置controller 的navigationItem一个le ...
- IOS中GPS定位偏移纠正(适用于Google地图)
在这个神奇的国度里,我们总得学习一些有中国特色的东东,例如“火星坐标”.也许有人还不知道这是什么玩意,我就简要介绍一下吧. 如果你有带GPS模块的智能手机,打开定位功能,然后访问Google ...
- IOS7学习之路九(ios7自定义UIAlertView)
IOS7的UIAlertView 不支持自定义,无法添加subview . 不过可以用第三方库git上的下载链接 https://github.com/wimagguc/ios-custom-a ...
- 自定义UINavigationBar的背景【转】
from:http://cocoa.venj.me/blog/custom-navbar-background/ 为了让我们的应用程序更加美观,我们往往希望对iPhone自带的控件进行一点自定义.比如 ...
- ios之自定义UINavigationBar
ios5 自定义导航条问题 在ios5之前的系统中,可以通过定义导航条类别的方式自定义导航条: @implementation UINavigationBar (CustomImage)- (void ...
- iOS7自定义statusbar和navigationbar的若干问题
当然有许多问题是这篇文章中没有提到的,按照文章的方法进行设置,你可能会遇到以下问题: 1.navigationbar的背景图片自定义以后,statusbar虽然和navigationbar共用了背景图 ...
- iOS LBS相关: 定位和中国特色的位置偏移纠正
LBS模块,首先当然是定位,获取自己所在的位置.主要用到的就是CLLocationManager,实例一个,然后调用startUpdatingLocation即可.其中可以指定精度CLLocation ...
随机推荐
- 网页绘制图表 Google Charts with JavaScript #2 ....与ASP.NET网页结合 (ClientScriptManager.RegisterStartupScript 方法)
此为文章备份,原文出处(我的网站) 网页绘制图表 Google Charts with JavaScript #2 ....与ASP.NET网页结合 (ClientScriptManager.Regi ...
- C#之匿名类型与隐式局部变量
一.匿名类型 下面一段代码展示了如何定义并且使用匿名类型: static void Main(string[] args) { var patent1 = new { Title = "Ne ...
- 第二十一章 数据访问(In .net4.5) 之 序列化
1. 概述 应用程序间传递数据,需要先将数据对象转化为字符流或字节流的形式,然后接收端收到后再转化回原始的数据对象.这就是序列化与反序列化. 本章介绍 .net中的序列化与反序列化.序列化器的种类 以 ...
- 2.css选择器
由第一节的语法结构可以看出css语言的核心思想就是:找到对象,然后对选定的对象进行属性赋值.其中,css中对象的选择,依靠的就是选择器.当掌握了选择器以后,就能够指哪打哪,弹无虚发了. css的选择器 ...
- App.config的学习笔记
昨天基本弄清config的使用之后,再看WP的API,晕了.结果WP不支持system.configuration命名空间,这意味着想在WP上用App.config不大可能了. WP具体支持API请查 ...
- Java 逻辑运算符、位运算符、移位操作符 总结(Java 学习中的小记录)
Java 逻辑运算符.位运算符.移位操作符 总结 作者:王可利(Star·星星) 逻辑运算符,表格如下: 解析逻辑运算符表: 1.与 (&) 特点:两个都为真的时候,结果为真.两个为 ...
- DB2物化表
DB2物化查询表(MQT)是DB2数据库中一类特殊的表 物化表和视图的区别 物化表是一个查询结果集,视图是一个SQL语句. 以下是一个简单例子(说明物化表) 1.创建表,插入测试数据 ----创建表 ...
- c++大数模板
自己写的大数模板,参考了小白书上的写法,只是实现了加减乘法,不支持负数,浮点数.. 除法还没写o(╯□╰)o以后再慢慢更吧.. 其实除法我用(xie)的(bu)少(lai),乘法写过fft,这模板还是 ...
- 如何把bootstrap用webpack打包
今天下载了一个anguarl2写后台,一直没有找到是如何使用bootstrap样式的,然后就全文做了搜索,发现有一段代码 import 'bootstrap-loader'; 这段代码很可疑,所以就查 ...
- html表格属性
一.在表格中插入文字及图片 1.把图片及文字分开到不同的[tr]标签表格内. <html> <body> <table border="1" widt ...