保持UI按钮背景图像的宽高比

时间:2016-11-10 14:14:24

标签: ios swift xcode uibutton

我一直在寻找好几个小时,而我发现的所有答案都是老答案,说它无法完成。

我有一个按钮,我希望背景图像尽可能大,同时保持其宽高比。无论我做什么,背景图像都会不断拉伸。我试过了。

    var bluecircle = #imageLiteral(resourceName: "BLUE.png")

    monBreak.contentMode = UIViewContentMode.scaleAspectFit
    monBreak.setBackgroundImage(bluecircle, for: UIControlState.normal)

我真的需要制作一个imageview并在其上面放一个隐形按钮吗?这似乎是欢迎很多可能出错的新事物。

我试过

@IBOutlet weak var monBreak: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    var bluecircle = #imageLiteral(resourceName: "BLUE.png")

    let theimagebehindmonBreak = UIImageView(image: bluecircle)
    theimagebehindmonBreak.frame = CGRectFromString( "{{0,0},{40,40}}")
    monBreak.contentMode = UIViewContentMode.scaleAspectFit
    monBreak.addSubview(theimagebehindmonBreak)
    theimagebehindmonBreak.image=bluecircle
    theimagebehindmonBreak.contentMode = UIViewContentMode.scaleAspectFit

这会使宽高比正确,但由于我希望布局是动态的,因此将其大小设置为固定值将无法正常工作,而且它不会居中。

刚开始我只是简单地应用按钮的约束

    var dacontraints = NSLayoutConstraint(monBreak.constraints)

但此时我收到错误“无法使用类型为'{[NSLayoutconstraints]}'的参数列表调用类型'NSLayoutConstraint'的初始化程序'

这是杀了我

2 个答案:

答案 0 :(得分:0)

听起来像是子类化适合的解决方案。

子类UIButton,在init中添加一个ImageView,将其调整到框架大小,并正确设置contentMode。

答案 1 :(得分:0)

古老的问题,但是由于我一直在寻找相同的问题,所以我认为这仍然有效。

我试图为for i in df.iterrows(): if df.loc[i, "value"].str[-1] == '-': df.loc[i, "value"] = '-' + df.loc[i, "value"].str[:-1] df_new = df[df["value"] != 0]] df_new.value = df.value.astype(float) 做同样的事情(正如大家所说),这是不可能的。但是,如果您的按钮仅包含一个图标,那么首先您应该使用backgroundImage方法,如果您使用它,则可以访问按钮的setImage属性。由于这是一个UIImageView,因此您可以将imageView设置为您喜欢的任何内容。