调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界的间距

本文主要是介绍调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界的间距,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  我们发现,在设置navigationItem的leftBarButtonItem或rightBarButtonItem时,用CustomView初始化UIBarButtonItem,不论怎么设置CustomView的frame,添加到导航条上之后总是和屏幕边界有一定的间距(5pix),如何自由调整这个间距呢?


初始化一个用于控制间距的UIBarButtonItem实例negativeSpacer,并设置negativeSpacer的width属性的值,设为-5的时候,正好可以使按钮与屏幕边界值为0,以rightBarButtonItem情况为例 

[plain] view plaincopy



  1. UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  2. /**  
  3.  *  设置frame只能控制按钮的大小  
  4.  */  
  5. btn.frame= CGRectMake(0, 0, 40, 44);  
  6. [btn addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];  
  7. UIBarButtonItem *btn_right = [[UIBarButtonItem alloc] initWithCustomView:btn];  
  8. UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]   
  9.                                    initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace   
  10.                                    target:nil action:nil];  
  11. /**  
  12.  *  width为负数时,相当于btn向右移动width数值个像素,由于按钮本身和边界间距为5pix,所以width设为-5时,间距正好调整  
  13.  *  为0;width为正数时,正好相反,相当于往左移动width数值个像素  
  14.  */  
  15. negativeSpacer.width = -5;   
  16. self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:negativeSpacer, btn_right, nil];  
  17. [btn_right release];  

再看一个例子:

    UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeCustom];

    btnBack.frame = CGRectMake(0, 0, 23, 23);

    btnBack.backgroundColor = [UIColor clearColor];

    [btnBack setImage:[UIImage imageNamed:@"bar_back_nomal.png"] forState:UIControlStateNormal];

    [btnBack setImage:[UIImage imageNamed:@"bar_back_selected.png"] forState:UIControlStateHighlighted];

    [btnBack setImage:[UIImage imageNamed:@"bar_back_selected.png"] forState:UIControlStateSelected];

    [btnBack addTarget:self action:@selector(btnBackClicked:) forControlEvents:UIControlEventTouchUpInside];

    [self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc]initWithCustomView:btnBack]];

    UIButton * source = [UIButton buttonWithType:UIButtonTypeCustom];

    source.frame = CGRectMake(0, 0, 35, 35);

    source.backgroundColor = [UIColor clearColor];

    [source setImage:[UIImage imageNamed:@"head_normal.png"] forState:UIControlStateNormal];

    [source setImage:[UIImage imageNamed:@"head_press.png"] forState:UIControlStateHighlighted];

    [source setImage:[UIImage imageNamed:@"head_press.png"] forState:UIControlStateSelected];

    [source addTarget:self action:@selector(btnPublicNum:) forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem * btn_right = [[UIBarButtonItem alloc]initWithCustomView:source];

    UIBarButtonItem * negativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

    negativeSpacer.width = -6;

    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:negativeSpacer, btn_right, nil];

OK:左右边界一模一样




这篇关于调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界的间距的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072905

相关文章

笔记本电脑屏幕模糊?6招恢复屏幕清晰!

在数字化时代的浪潮中,笔记本电脑已成为我们生活、学习和工作中不可或缺的一部分。然而,当那曾经清晰明亮的屏幕逐渐变得模糊不清时,无疑给我们的使用体验蒙上了一层阴影。屏幕模糊不仅影响视觉舒适度,更可能对我们的工作效率和眼睛健康构成威胁。 遇到笔记本电脑屏幕模糊的情况时我们应该如何解决?本文将与大家分享6个简单易懂的解决方法。 方法一:调整Windows分辨率 电脑屏幕模糊显示不清晰怎

导航条下 ScrollView 第一个View去掉向下偏移的64px

self.automaticallyAdjustsScrollViewInsets=NO;      self.scrollView.contentInset=UIEdgeInsetsMake(-64, 0, 0, 0); self.automaticallyAdjustsScrollViewInsets=NO; 相同的意思。

TableView 当前选中的行号。 默认会使哪一行选中 加入导航条后contentInset向下偏移的64

1.得到当前选中的行号     NSLog(@"%ld %s",  [self.tableView indexPathForSelectedRow].row,__func__); 2.默认选中表格的那一行     [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0 ]

Unity Meta Quest 开发:关闭 MR 应用的安全边界

社区链接: SpatialXR社区:完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 📕教程说明 这期教程我将介绍如何在应用中关闭 Quest 系统的安全边界。 视频讲解: https://www.bilibili.com/video/BV1Gm42157Zi 在 Unity 中导入 Meta XR SDK,进行环境配置后,打开 Assets > Plugins > An

颠覆多跳事实验证!Causal Walk 前门调整技术引领去偏新纪元

Causal Walk: Debiasing Multi-Hop Fact Verifcation with Front-Door Adjustment 论文地址: Causal Walk: Debiasing Multi-Hop Fact Verification with Front-Door Adjustment| Proceedings of the AAAI Conference

GUI布局:边界布局、流式布局、网格布局、卡片布局

边界布局 package guiTest;//JFrame默认的是边界布局BorderLayoutimport java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.JFrame;public class BorderLayoutDemo {public static void main(String[

Android中如何动态的调整Dialog的背景深暗

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在 Android 开发中,当你使用 Dialog 或 DialogFragment 时,可以通过设置 Window 的背景变暗来突出它的可见性。这个效果是通过 backgroundDimAmount 属性来控制的。 那我们怎么动态设置backgroundDimAmou

iOS中截取屏幕中局部图片

-(void)screenShotRect:(CGRect)aRect //arect 想要截图的区域{UIGraphicsBeginImageContextWithOptions(CGSizeMake(640, 960), YES, 0);[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *viewI

ffmpeg调整视频角度

最近公司要做一款视频版宠物喂食器,存在一个问题,就是视频sensor是旋转90度放置的,可能是开模影响或者是方案选型问题,这里先不做讨论。         由于视频sensor不是正立放置,那么出来的视频流也是被旋转90度的,这样在app端显示的视频也需要调整。         针对实时流,是比较容易处理的。可以有两种方法进行处理:一种就是将正立着的播放器旋转90度,也就是Vi

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

初始化数据 */ private void initData(Bundle savedInstanceState) { if (savedInstanceState != null) mDatas = savedInstanceState.getStringArrayList(“mDatas”); if (mDatas == null) { mLoadingDialog = new