【问题标题】:Set UIButton tittle to specific position for all screen sizes将 UIButton 标题设置为所有屏幕尺寸的特定位置
【发布时间】:2019-07-29 09:02:16
【问题描述】:

下面有一个按钮。

它实际上是一个 UIButton,里面有一个 Image。问题是“扫描产品”也在图像内部,不是标题。

首先我想知道苹果是否允许这样做,因为我在指南中找不到东西。

还有一种方法可以将标题放置在按钮高度的 25% 处。

编辑

scanTest.setTitle("Test", for: .normal)
        let x = scanTest.frame.origin.x * 0.35
        scanTest.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: x, right: 0)

这是将标题放置在按钮高度的 25% 处。但在 iPhone SE 上看起来不对。

我的意思是我不认为这是 25%。

【问题讨论】:

  • 约束中的参数乘数
  • 1) 是的,这是允许的 2) 据我所知,您可以在约束上使用乘数,25% = 0.25 图像高度,也许我没有理解您的问题。如果您详细说明一下,它将有所帮助
  • 是的,您理解正确。我尝试使用乘数,但在不同的 iPhone 上看起来不同。看看我的编辑。

标签: swift uibutton autolayout


【解决方案1】:

我建议对所有内容都使用 AutoLayout,因此您可以在图像顶部添加一个不可见的 UIView,其高度为图像高度的 25%,然后只需将按钮添加到该视图并确保 topAnchor 的该按钮与新的UIView 相同。

如果你不明白,请告诉我,以便我给你举个例子。

更新:

您可以尝试运行它,它可能不是最佳解决方案,但它会完成工作。 (您可以使用背景颜色来了解架构)

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    view.backgroundColor = .white

    let imageView = UIImageView()
    view.addSubview(imageView)
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

    let holder = UIView()
    view.addSubview(holder)
    holder.translatesAutoresizingMaskIntoConstraints = false
    holder.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.25).isActive = true
    holder.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    holder.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    holder.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

    let label = UILabel()
    holder.addSubview(label)
    label.translatesAutoresizingMaskIntoConstraints = false
    label.topAnchor.constraint(equalTo: holder.topAnchor).isActive = true
    label.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    label.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    label.text = "Hello"
    label.textAlignment = .center

}

【讨论】:

  • 感谢您的回答。我对所有事情都使用自动布局。它完美无缺。问题出在标题上。您是否建议将辅助视图与标题标签放在一起?
  • @NickStefanidis 我刚刚添加了一个示例。希望对你有帮助。
【解决方案2】:

第一个问题的答案:- Apple 肯定会允许这样做。

第二个问题的答案: - 因为标题在图片中,所以标题不能从 xcode 更改,但您可以编辑图片。

【讨论】:

  • 感谢您的回答。如果我从图像中取出标题,我可以将 Xcode 中的标题放置在所有屏幕尺寸的相同位置吗?我不知道我解释的对不对。
  • 是的,你可以用 AutoLayout 来点缀这个
【解决方案3】:

您可以通过“尺寸检查器”根据标题和图像插图设置标题和图像。 另一种方法是您可以在一个视图中获取 UIImage(您的图像)和 UILabel(放置您的标题)以及 UIButton 上方的更多自定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多