`
wfkbyni
  • 浏览: 86958 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

UINavigationItem 位置问题

 
阅读更多
解决ios7 UINavigationItem 位置偏移问题

#import <UIKit/UIKit.h>
@interface UINavigationItem (Spacing)

-(void)mySetLeftBarButtonItem:(UIBarButtonItem*)barButton;
-(void)mySetRigthBarButtonItem:(UIBarButtonItem*)barButton;

@end




#import "UINavigationItem+Spacing.h"
#import <objc/runtime.h>

#import <objc/message.h>

@implementation UINavigationItem (Spacing)

// load 在初始化类时调用,每个类都有一个load 方法,

// 类的初始化先于对象

+(void)load

{
   
    //以下方法告诉系统用后面的方法替换前面的
   
    method_exchangeImplementations(
                                  
                                   class_getClassMethod(self, @selector(setLeftBarButtonItem:)),
                                  
                                   class_getClassMethod(self, @selector(mySetLeftBarButtonItem:)));
   
}

- (UIBarButtonItem *)spacer:(float)width

{
   
    UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                             
                                                                           target:nil action:nil];
   
    if (ios7) {
        space.width = width;
    }
   
    return space ;
   
}

-(void)mySetLeftBarButtonItem:(UIBarButtonItem*)barButton{
    NSArray* barButtons = nil;
   
    barButtons = [NSArray arrayWithObjects: [self spacer:-10.0f], barButton,nil ];
   
    [self setLeftBarButtonItems: barButtons];
   
}

-(void)mySetRigthBarButtonItem:(UIBarButtonItem *)barButton{
    NSArray* barButtons = nil;
   
    barButtons = [NSArray arrayWithObjects: [self spacer:-15.0f], barButton,nil ];
   
    [self setRightBarButtonItems: barButtons];
}

@end
分享到:
评论

相关推荐

    UINavigationItem-Margin:UINavigationItem的边距

    UINavigationItem + Margin UINavigationItem的保证金。 设置边距 只需设置UINavigationItem的leftMargin和rightMargin 。 navigationItem.leftMargin = 0 ; navigationItem.rightMargin = 0 ; 哇,保证金已经...

    自定义UINavigationItem.titleView显示

    作者bing900717,源码CenterTitleView,自定义UINavigationItem.titleView并居中显示。titleView会根据leftBarButtonItem和rightBarButtonItem调整自己的位置和大小。这就产生了居中显示的问题,当...

    iOS 11 UINavigationItem 去除左右间隙的方法

    在 iOS 11 中,UINavigationItem 的左右间隙问题变得非常棘手,因为 iOS 11 对于 Nav 层级结构的改变,导致以前的方法无法达到理想的移动效果。为了解决这个问题,本文将介绍 iOS 11 UINavigationItem 去除左右间隙...

    swift-UINavigationItem.titleView兼容的UIControl带有标题副标题和下拉列表

    `UINavigationItem.titleView` 是一个常用的属性,用于自定义导航栏中央的标题视图。在这个特定的案例中,我们讨论的是一个兼容`UINavigationItem.titleView`的`UIControl`,它不仅包含了一个标题,还扩展了功能,...

    UINavigationItem-iOS7Spacing:用于修复 iOS 7 UINavigationItem 间距的类别

    iOS 5/6 上的 leftBarButtonItem 位置 iOS 7 上的 leftBarButtonItem 位置 修复了 iOS 7 上的 leftBarButtonItem 位置 除了在 *-Prefix.pch 文件中包含此类别外,您无需执行任何其他操作: #ifdef __OBJC__ #import...

    UINavigationItem-Loading:在导航栏中显示加载状态而不是左右项目或标题的简单类别

    UINavigationItem-加载 在导航栏中为用户显示加载/上传状态的简单方法。 介绍 由于再次需要这种模式,我决定制作这个类别。 所以在这里,只需几种方法并完全定制颜色。 演示 或自己构建 pod try UINavigationItem+...

    IOS UINavigationBarItem设置

    `UINavigationItem` 的标题默认会显示在导航栏的中央,可以通过以下方式设置: ```swift let navigationItem = self.navigationItem navigationItem.title = "我的标题" ``` 或者,在使用 Storyboard 时,可以直接...

    UINavigationItem-Loading(iPhone源代码)

    来源:github/UINavigationItemLicence:MIT作者:Anton  UINavigationItem-Loading能够为你的导航栏上的Item添加loading的动画,自由控制动画的动静。支持左,右,和中间位置。

    UINavigationBar的层次说明(附:简单实例源码)

    它的主要功能是显示和管理导航项(UIBarButtonItem),这些项可以是标题(UINavigationItem)或自定义视图。导航项可以包含标题文本、左/右bar按钮和其他可自定义的元素。 在`UINavigationBar`的层次结构中,`...

    ios 导航栏放置多个按钮及引申的ivar变量的问题

    本文将详细探讨如何在iOS的导航栏上实现多按钮布局,以及由此引发的ivar(实例变量)管理问题。 首先,我们要知道,在原生的UINavigationController中,导航栏默认只支持左右两个BarButtonItem,即“返回”按钮和一...

    ios-CenterTitleView.zip

    自定义UINavigationItem.titleView并居中显示。 titleView会根据leftBarButtonItem和rightBarButtonItem调整自己的位置和大小。这就产生了居中显示的问题,当rightBarButtonItem没有被设置的时候,titleView由于偏...

    ios-导航标题按钮.zip

    在iOS应用设计中,导航栏(NavigationBar)是苹果iOS Human Interface Guidelines的重要组成部分,它提供了清晰的层次结构,帮助用户了解他们在应用中的位置,并提供返回上一级或执行其他操作的方式。 导航栏的标题...

    导航栏上Item添加loading动画

    在提供的代码库 "UINavigationItem-Loading" 中,开发者可能已经创建了一个可定制的类别,允许我们轻松地在导航栏的左侧、右侧甚至是中心位置插入一个加载动画。 加载动画可以有多种实现方式,比如使用...

    斯坦福大学iOS开发教程2011年秋Lecture 10

    标题与描述:斯坦福大学iOS开发教程2011年秋季第10讲,主要讲解了iOS应用开发中的几个核心概念和技术,包括UITabBarController、UINavigationItem以及Objective-C中的Blocks特性。 ### UITabBarController ...

    ios应用源码之发布一个问题 就提供一个新demo,页面导航跳转的简单demotest 2018127

    本示例“ios应用源码之发布一个问题 就提供一个新demo,页面导航跳转的简单demotest 2018127”旨在通过源代码演示如何在iOS应用中实现这一功能,特别关注于2018年12月7日的编程实践。 首先,我们来探讨iOS中的主要...

    自定义导航栏,可以添加左中右barbutton

    本项目标题提到的“自定义导航栏,可以添加左中右barbutton”,指的是开发者通过编程方式来构建一个非标准的导航栏,不仅允许在左右两侧添加UIBarButtonItem,还能在中间位置设置额外的操作按钮。这通常涉及到对...

    IOS源码应用Demo-Navgation(导航+表格).zip

    导航控制器通常会自动在顶部显示一个导航栏,其中包含一个“返回”按钮以及可自定义的标题,这使得用户能清晰地了解他们在应用中的位置。 导航栏上的按钮可以通过`UINavigationItem`对象进行设置,包括左侧的“返回...

    UINavigationImage Demo代码

    `TitleView`是`UINavigationItem`的一个属性,允许开发者替换默认的标题显示。 在iOS应用设计中,自定义`UINavigationItem`的TitleView可以提升用户界面的视觉效果和交互体验。下面,我们将深入探讨如何使用代码...

    ios应用源码之位于顶部的黑酷tab view视图demo 2018127

    4. 使用`UINavigationBar`和`UINavigationItem`来构建顶部导航栏,并调整其位置。 5. 可能还包括自定义过渡动画,使得在不同Tab之间切换时有更平滑的用户体验。 6. 最后,源码可能还会涉及如何响应用户交互,如点击...

Global site tag (gtag.js) - Google Analytics