在不同的iOS版本中,UIButton的标题来源不同,内部带有图像 我在界面生成器中创建了一个按钮 将固定宽度=120和高度=40的约束设置到此按钮 在我将图像添加到按钮并设置图像插入(顶部:10,左侧:0,底部:10,右侧:100)后,将图像移动到左侧

在不同的iOS版本中,UIButton的标题来源不同,内部带有图像 我在界面生成器中创建了一个按钮 将固定宽度=120和高度=40的约束设置到此按钮 在我将图像添加到按钮并设置图像插入(顶部:10,左侧:0,底部:10,右侧:100)后,将图像移动到左侧,ios,uibutton,uiedgeinsets,Ios,Uibutton,Uiedgeinsets,问题: 在不同的iOS版本中(在我的例子中是:10.3.1、12.1和13.1),按钮的绘制方式不同。 对于iOS 13.1,按钮的标题来源是(x=29.5,y=11);对于较旧的iOS,按钮的标题来源是(x=44,y=11) 如何使按钮在所有iOS版本中看起来都一样?我知道你想做什么,只是不想做。如果你想按你认为的那样去做,你会崩溃的。而是这样做 按上面的方法制作按钮 将UIImageView添加到按钮,以便将UIImageView作为子视图添加到UIButton 在UIImageView上

问题: 在不同的iOS版本中(在我的例子中是:10.3.1、12.1和13.1),按钮的绘制方式不同。 对于iOS 13.1,按钮的标题来源是(x=29.5,y=11);对于较旧的iOS,按钮的标题来源是(x=44,y=11)


如何使按钮在所有iOS版本中看起来都一样?

我知道你想做什么,只是不想做。如果你想按你认为的那样去做,你会崩溃的。而是这样做

  • 按上面的方法制作按钮
  • 将UIImageView添加到按钮,以便将UIImageView作为子视图添加到UIButton
  • 在UIImageView上添加约束,使图像视图位于按钮的最左侧

  • 这就是你如何使用iOS使那些应该工作但不工作的东西工作,而不需要对UIButton进行子类化,并用它自己的内部imageview做一些疯狂的几何数学

    我知道你想做什么,只是不知道而已。如果你想按你认为的那样去做,你会崩溃的。而是这样做

  • 按上面的方法制作按钮
  • 将UIImageView添加到按钮,以便将UIImageView作为子视图添加到UIButton
  • 在UIImageView上添加约束,使图像视图位于按钮的最左侧

  • 这就是你如何使用iOS使那些应该工作但不工作的东西工作,而不需要对UIButton进行子类化,并用它自己的内部imageview做一些疯狂的几何数学

    我的研究揭示了绘制如此不同的按钮的可能原因。 原因是imageView的旧框架。 添加图像插入以向左/向右移动图像后,图像边框将发生变化。 我不知道苹果公司是如何精确计算出按钮的名称来源的。 在旧版iOS中,标题的origin.x等于图像的旧frame.width。 在iOS 13中,标题的来源如我所料发生了变化

    因此,我决定在将UIImage放入UIImageView之前调整其大小。 它工作得很好


    感谢所有提供建议的人。

    我的研究揭示了按钮绘制如此不同的可能原因。 原因是imageView的旧框架。 添加图像插入以向左/向右移动图像后,图像边框将发生变化。 我不知道苹果公司是如何精确计算出按钮的名称来源的。 在旧版iOS中,标题的origin.x等于图像的旧frame.width。 在iOS 13中,标题的来源如我所料发生了变化

    因此,我决定在将UIImage放入UIImageView之前调整其大小。 它工作得很好

    感谢所有提供建议的人。

    “设置固定宽度=120”,但这不是问题所在吗?如果使用“自动布局”,则可以自动正确设置宽度。此外,我也不能真正推荐使用内容插入移动片段的技术;相反,子类UIButton并负责工件的去向。“设置固定宽度=120”但这不是问题所在吗?如果使用“自动布局”,则可以自动正确设置宽度。此外,我也不能真正推荐使用内容插入移动片段的技术;相反,将UIButton子类化,并负责各个部分的去向。