【问题标题】:UIBarButtonItem backButtonBackgroundImage: gets stretchedUIBarButtonItem backButtonBackgroundImage:被拉伸
【发布时间】:2015-03-13 00:01:06
【问题描述】:

我正在使用UIAppearance 设置自定义backButtonBackgroundImage 以及隐藏后退按钮标题:

// Back Button Image
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"ZSSBackArrow"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -100) forBarMetrics:UIBarMetricsDefault];

这很好用,但问题是我的箭头图像真的被水平拉伸了:

应该是这样的:

更新:使用 cap inset 使图像看起来像这样:

有没有办法防止图片被拉伸?

【问题讨论】:

    标签: ios objective-c uistoryboard uibarbuttonitem uiappearance


    【解决方案1】:

    更改图片的帽子插图以使图片符合您的要求:

    UIImage *barButtonImage = [[UIImage imageNamed:@"ZSSBackArrow"] resizableImageWithCapInsets:UIEdgeInsetsMake(0,width,0,0)];
    

    这会将图像的宽度保持为您指定的宽度。

    您可能需要稍微调整一下数字才能使其恰到好处。

    【讨论】:

    • 尝试在右侧放置空间,背景图像将是平铺的,这可能是它看起来奇怪的原因。您需要在左侧放置足够的填充以防止其平铺。
    • 不要做左边的填充,做右边的填充把它推到左边。我刚刚做了一个快速测试,这样做让我的按钮看起来不错:UIEdgeInsetsMake(0,0,0,90)。一些数字也给我带来了奇怪的结果,但可以利用这些数字找到最佳位置。
    • 实际上你可以发布你使用的 UIEdgeInsets 吗?只是把宽度应该实际工作。我刚刚用 64 x 64 像素的图像和 UIEdgeInsetsMake(0,64,0,0) 再次测试了它
    • 仍然表现得很奇怪:cl.ly/image/2Q140V2G270J 使用UIEdgeInsetsMake(0,37,0,0)
    【解决方案2】:

    使用背景图像属性强制拉伸。尝试使用 image 属性并使用图像 inset/offset 来将图像定位到您想要的位置。

    【讨论】:

    • 使用self.navigationItem.backBarButtonItem.image = [UIImage imageNamed:@"ZSSBackArrow"]; 似乎不起作用。
    • 新建一个UIBarButtonItem并将其分配给self.navigationItem.backBarButtonItem = newUIBarButtonItem
    • 这似乎也不起作用。给我系统默认值,而不是我试图设置的 barButton。
    猜你喜欢
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2021-09-23
    相关资源
    最近更新 更多