以编程方式在swift中创建动态高度UIImageViews

时间:2016-07-02 02:59:07

标签: ios swift uiimageview nsurlconnection lazy-loading

我想动态加载UIImage。那些是不同的大小。我尝试做的是在下载图像后重置UIImageView帧。

 let imgVw:UIImageView! = UIImageView.init(frame: CGRectMake(5, self.otherVidY, imgvwWidth, scrollH-10))
        imgVw.image=UIImage(named: "NotFound")
        self.scroll.addSubview(imgVw)

        let vwY = (self.otherVidY+scrollH-10)-30
        let view: UIView = UIView.init(frame: CGRectMake(5, vwY, imgvwWidth, 30))
        view.backgroundColor=UIColor.blackColor()
        self.scroll.addSubview(view)

        if let imgURL = NSURL(string: urlString)
        {
            do {
                if let img = imageCache[urlString] {
                    imgVw.image = img
                }

                else
                {
                    // The image isn't cached, download the img data
                    // We should perform this in a background thread
                    let request: NSURLRequest = NSURLRequest(URL: imgURL)
                    let mainQueue = NSOperationQueue.mainQueue()
                    NSURLConnection.sendAsynchronousRequest(request, queue: mainQueue, completionHandler: { (response, data, error) -> Void in
                        if error == nil {
                            // Convert the downloaded data in to a UIImage object
                            let image = UIImage(data: data!)
                            let resizedImage = self.resizeImage(image!, newWidth: imgVw.frame.size.width, imageView: imgVw)
                            // Store the image in to our cache
                            self.imageCache[urlString] = resizedImage
                            // Update the cell
                            dispatch_async(dispatch_get_main_queue(), {
                                imgVw.image = resizedImage
                                var rect = imgVw.frame
                                rect.size.height = resizedImage.size.height
                                imgVw.frame = rect
                                self.otherVidY = imgVw.frame.origin.y+imgVw.frame.size.height+5

                            })
                        }
                        else {
                            print("Error: \(error!.localizedDescription)")
                        }
                    })
                }

            }

        }

        self .otherVidY=imgVw.frame.size.height+imgVw.frame.origin.y+5
        self.scroll.contentSize=CGSizeMake(self.screenWidth, self.otherVidY+imgVw.frame.size.height)



    }

但是当我设置下一张图像的Y值时,我遇到了问题。它,重叠。如何解决这个问题。请帮我。 感谢

1 个答案:

答案 0 :(得分:0)

在这里,你必须处理起源,这只取决于你的逻辑。您可以使用。

object(View).frame.size.origin

它将为您提供视图的X,Y和

view.frame.size.height& view.frame.size.width

它会给你身高和体重。

然后你需要为你想要的ImageView设置CGRect。