【问题标题】:UIBarButtonItem support portrait and landscape sizes with a custom view?UIBarButtonItem 是否支持自定义视图的纵向和横向尺寸?
【发布时间】:2012-12-07 13:47:41
【问题描述】:

我有一个UIBarButtonItem,它只是一个图像,我想将此图像用作带有空字符串标题的条形项的背景图像。

但宽度不正确,为了获得正确的尺寸,我制作了一个带有自定义视图的 UIBarButtonItem,它是带有图像集的 UIButton

我遇到的问题是,在横向模式下,此自定义视图无法调整大小以正确适应较小的导航栏。

我尝试通过允许灵活高度使按钮自动调整大小,但它保留了肖像的顶部和底部边距,现在我的按钮被压扁了。

我最初想使用标题为空的条形项目的原因是使用外观协议设置条形指标默认和横向的背景图像以绕过此问题。

如何使我的UIBarButtonItem 支持带有自定义视图的纵向和横向尺寸?

我有一个专用的风景图像,所以它只是更小,我想使用它不会失真。

肖像:

风景:

具有自动调整大小的横向,注意纵向的边距会导致栏按钮被过度挤压。

【问题讨论】:

  • 那么这里的最终目标是什么?您只是希望它保持其纵横比吗?这基本上是我对自动调整蒙版的期望。
  • 目标:为风景提供不同的图像。或使用此自定义视图的纵横比调整大小
  • 您有关于这个问题的任何消息吗?我也有同样的问题。
  • 还是不行。最后我使用了自动调整大小并得到了压扁的结果。比重叠 IMO 更好。还是很奇怪的问题。

标签: ios uikit


【解决方案1】:

最好的答案是提供两张图片,一张用于纵向模式,另一张用于横向模式,您的代码将类似于

UIBarButtonItem *barBtnLeft= [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"yourImg.png"] landscapeImagePhone:[UIImage imageNamed:@"yourImg_Landscape.png"]style:UIBarButtonItemStyleBordered target:self action:@selector(yourSelector:)];

我知道这篇文章很旧,但它很幸运得到了正确的答案,我希望像我这样的新人能得到这个解决方案的帮助。

我应该在这里提一下,横向图像应该小 0.75f 比例。

【讨论】:

    【解决方案2】:

    您使用的图像是否可调整大小?你是用- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets 创建的吗?

    【讨论】:

    • 不是真的...不过,将它从纵向栏项目的 30 像素高度压缩到横向栏项目的 25 像素并不是什么大问题。但似乎根本没有办法为每个状态或控件调整大小指定一个或两个视图
    • 你能发一张它现在的截图吗?
    【解决方案3】:

    如果您只是希望它保持其纵横比,并且您使用的自定义视图是 UIImageView(我假设它是),您可以设置图像视图的 contentMode 属性以使其在保持纵横比的同时进行缩放比率。你可能会想使用UIViewContentModeScaleAspectFit

    【讨论】:

    • 不,它是一个带有图像的 UIButton,保留纵横比会很好
    • UIButton 也有 contentMode 属性(任何 UIView 子类都会)。
    • 对,但这并不能解决问题。问题是项目的高度是纵向 30 像素,横向 2 像素。而且我找不到让我的按钮自定义视图具有 25 像素的方法。它要么保持原始大小,要么,如果我添加一些自动调整大小,它会保留纵向模式的顶部和底部边距。因此,条形按钮 8 不是横向的 25 像素,它更像是 20 像素。这就是为什么我说这是由边缘引起的夸张的壁球
    猜你喜欢
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多