Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS7中的navigationItem.rightBarButtonItem边距_Ios7 - Fatal编程技术网

iOS7中的navigationItem.rightBarButtonItem边距

iOS7中的navigationItem.rightBarButtonItem边距,ios7,Ios7,由于某些原因,导航栏中的右按钮距离右侧16px。我想把利润减少一些。正确的方法是什么 self.btnDone = [UIButton buttonWithType:UIButtonTypeCustom]; UIImage *btnImgDone = [UIImage imageNamed:@"btn_small_default.png"]; self.btnDone.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" siz

由于某些原因,导航栏中的右按钮距离右侧16px。我想把利润减少一些。正确的方法是什么

self.btnDone = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *btnImgDone = [UIImage imageNamed:@"btn_small_default.png"];
self.btnDone.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:15.0];
[self.btnDone setTitle:@"Done" forState:UIControlStateNormal];
[self.btnDone setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.btnDone setTitleShadowColor:[UIColor colorWithWhite:0 alpha:.2f] forState:UIControlStateNormal];
self.btnDone.titleLabel.shadowOffset = (CGSize){0,-1};
[self.btnDone setBackgroundImage:btnImgDone forState:UIControlStateNormal];
[self.btnDone setBackgroundImage:[UIImage imageNamed:@"btn_small_active.png"] forState:UIControlStateHighlighted];  

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.btnDone];

我也遇到了同样的问题,我发现解决这个问题的唯一方法就是使用
setImageEdgeInsets:

如果要将按钮向右移动(例如:5点或10像素),请在按钮声明中添加以下行:

UIEdgeInsets buttonEdges = UIEdgeInsetsMake(0, 5, 0, -5);
[self.btnDone setImageEdgeInsets:buttonEdges];
如果要支持iOS6和iOS7,可以执行以下操作:

CGFloat xOffset;

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f)
{
    // for ios7
    xOffset = 5.0f;
}
else
{
    // ios6
    xOffset = 2.0f;
}

UIEdgeInsets buttonEdges = UIEdgeInsetsMake(0, xOffset, 0, - xOffset);
[self.btnDone setImageEdgeInsets:buttonEdges];

希望有帮助

尝试在该按钮后放置一个固定的空格:

// Fixed space
UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[fixedSpace setWidth:20.0];

self.navigationItem.rightBarButtonItems = @[fixedSpace, yourButton];
我使用的全部代码是:

// Bar button
UIButton *loadButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 15, 34)];
VVdLoadImage *loadImage = [[VVdLoadImage alloc] initWithFrame:CGRectMake(0, 0, 15, 34)];
loadImage.backgroundColor = [UIColor clearColor];
loadImage.userInteractionEnabled = NO;
[loadButton addSubview:loadImage];

[loadButton addTarget:self action:@selector(loadCards) forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *loadBarButton = [[UIBarButtonItem alloc] initWithCustomView:loadButton];

UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[fixedSpace setWidth:20.0];

self.navigationItem.rightBarButtonItems = @[fixedSpace, loadButton];

如果你仍然不能让它工作,出于某种原因,这对我来说是有效的。someButton是我添加的UIButton,作为我的UIBarButtonim的自定义视图

someButton.contentEdgeInsets = (UIEdgeInsets){.right=-20};
看看我的

func addLogOutButtonToNavigationBar(triggerToMethodName: String)
{
    let button: UIButton = UIButton()
    button.setImage(UIImage(named: "logOff.png"), forState: .Normal)
    button.frame = CGRectMake(20, 0, 30, 25)
    button.contentEdgeInsets = UIEdgeInsets.init(top: 0, left: 10, bottom: 0, right: -10)

    button .addTarget(self, action:Selector(triggerToMethodName), forControlEvents: UIControlEvents.TouchUpInside)
    let rightItem:UIBarButtonItem = UIBarButtonItem()
    rightItem.customView = button
    self.navigationItem.rightBarButtonItem = rightItem
}

你在这段时间里找到答案了吗?我试过了,但结果是按钮的空间变小了。右边的边距保留了下来。我用不同的setWidth值再次测试了它。它对我有效。当我使用没有背景图像的UIButton时,它有效。你的有背景图像和按钮标题文本吗?是一个UIButton,我在其中添加了一个图像作为子视图。我已经修改了我以前的答案来显示代码。但是如果我使用按钮的背景图片,这会起作用吗?因为背景将被压缩。我的错误是,我没有看到您使用的是
setBackgroundImage:forState:
setImageEdgeInsets:
对我有效,但我使用的是
setImage:forState:
(虽然它没有压缩)。