通过更改框架调整UIImageView的大小

时间:2017-08-29 06:06:04

标签: ios iphone swift uiimageview frame

我在故事板中添加了一个带有默认图像的UIImageView。在代码中,我在运行时更新图像并调整帧。

mainImageView.sd_setImage(with: NSURL(string: urlString) as URL?, completed: {
        (image, error, cacheType, url) in
        self.setPoints()
    })

public func setPoints() {
    mainImageView.frame = CGRect(x:x, y:0, width:(mainImageView.image?.size.width)!/1.7, height:(mainImageView.image?.size.height)!/1.7)
    mainImageView.contentMode = .scaleAspectFill
    mainImageView.setNeedsDisplay()
    mainImageView.reloadInputViews()
    mainImageView.updateConstraintsIfNeeded()
}

我阅读了有关堆栈溢出的各种帖子,并尝试使用上述方法调整imageivew的大小,但没有运气。还有其他方法可以调整imageview的大小吗?

2 个答案:

答案 0 :(得分:2)

您应该禁用预生成的约束。最简单的方法是使用自动调整大小的掩码而不是动画视图的约束。

curl http://localhost:9222/json

# should get you something like this:

[{"description": "",
  "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe",
  "id": "2f428ea1-7229-484c-b7c7-57ef2f098ffe",
  "title": "Google",
  "type": "page",
  "url": "https://www.google.com/",
  "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe"}]

您可以将此代码添加到const puppeteer = require('puppeteer'); puppeteer.connect({ browserWSEndpoint: "ws://localhost:9222/devtools/page/2f428ea1-7229-484c-b7c7-57ef2f098ffe" }).then (async browser => { const page = await browser.newPage(); await page.goto('https://www.google.com'); ;; you just opened another tab }); 方法或mainImageView.translatesAutoresizingMaskIntoConstraints = true

之上

最后但并非最不重要的是,您需要在块中调用layoutIfNeeded。

-viewDidLoad

答案 1 :(得分:0)

看起来您正在使用autolayout来调整图像视图的大小,这可以解释为什么手动设置框架没有做任何事情。您需要修改确定图像视图大小的约束,然后调用mainImageView.layoutIfNeeded()