【问题标题】:Swift 3 | Button Label under Image AND resize Image斯威夫特 3 |图像下的按钮标签和调整图像大小
【发布时间】:2017-03-14 00:59:03
【问题描述】:

我在按钮顶部显示图像,在 iPhone 7 上一切正常,例如:

我将按钮背景颜色设置为蓝色以查看按钮框架。

由于我在按钮的父视图上设置了纵横比,因此小型设备和 iPhone 4S 上的按钮大小会发生变化:

按钮的图像未调整大小。 这是我的代码:

public extension UIButton {

    func setButtonWithTextBehindImage () {
        let spacing = CGFloat(0.0)

        let imageSize = self.imageView?.frame.size
        self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -(imageSize?.width)!, -((imageSize?.height)! + spacing), 0.0)
        let titleSize = self.titleLabel?.frame.size
        self.imageEdgeInsets = UIEdgeInsetsMake(-((titleSize?.height)!), 0.0, 0.0, -(titleSize?.width)!)
    }
}

我尝试在按钮和按钮 imageView 上设置 contentMode .scaleAspectFit,但每次我的 imageSize 为 (30, 30)(我的 @1x 图像的大小)并且它不会调整为按钮大小。

我该怎么办? TY

【问题讨论】:

    标签: ios swift3 uibutton imageedgeinsets titleedgeinsets


    【解决方案1】:

    您能否提供更多关于您如何使用您提供的代码 sn-p 的上下文(也许我们可以尝试运行一些代码)? 来自https://developer.apple.com/reference/uikit/uibutton/1624010-titleedgeinsets 的文档提到在调整矩形大小以适应后应用插入。您在扩展中调用函数的时间可能会影响预期的调整大小不会发生 - 例如,您是否在加载视图时调用它,在它出现之后,在子视图布局之后。

    【讨论】:

    • 感谢您的回答。我在 viewDidLayoutSubviews 中调用此方法:override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() ticketingButton.setButtonWithTextBehindImage() shoppingButton.setButtonWithTextBehindImage() 我认为这是调用它的最佳位置,也许不是?
    猜你喜欢
    • 2022-12-09
    • 2017-03-24
    • 2011-07-04
    • 2017-07-21
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    相关资源
    最近更新 更多