我正在我的应用中显示一张照片,而我正在使用UIImage
。到目前为止,这就是我这样做的方式:
func getDataFromUrl(url:NSURL, completion: ((data: NSData?, response: NSURLResponse?, error: NSError? ) -> Void)) {
NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in
completion(data: data, response: response, error: error)
}.resume()
}
func downloadImage(url: NSURL){
getDataFromUrl(url) { (data, response, error) in
dispatch_async(dispatch_get_main_queue()) { () -> Void in
guard let data = data where error == nil else { return }
print("Download Finished")
self.requestPhoto.image = UIImage(data: data)
}
}
}
然后在viewDidLoad()
我正在做:
if let checkedUrl = NSURL(string: photo) {
requestPhoto.contentMode = .ScaleAspectFit
downloadImage(checkedUrl)
}
这使得UIImage充满了我的照片,但它不是可点击的,它是原始组件的大小。当用户点击UIImage组件时,有没有办法添加某种监听器或者全屏显示照片的东西?
答案 0 :(得分:2)
您需要在UITapGestureRecognizer
图片视图中添加requestPhoto
。像这样:
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("tapHandler"))
self.requestPhoto.addGestureRecognizer(tapGestureRecognizer)
self.requestPhoto.userInteractionEnabled = true
最后一行是必需的,因为UIImageView
默认情况下处于关闭状态,因此触摸会被取消。
然后在同一个班级:
func tapHandler(sender: UITapGestureRecognizer) {
if sender.state == .Ended {
// change the size of the image view so that it fills the whole screen
}
}
如果视图是全屏的,那么整个事情也可以从标记中获益,这样当用户点击全屏图像时,您可以反转该过程。
与往常一样,您可以在docs中阅读更多内容。
答案 1 :(得分:2)
如何将缩略图照片放大到iOS上的全屏照片视图?
我通过创建具有相同图像的新UIImageView对象解决了这个问题,并将其框架设置为缩略图图像:
let fullscreenPhoto = UIImageView(frame: thumbnailImage.frame)
然后将图像作为子图层添加到主窗口中:
UIApplication.sharedApplication().windows.first!.addSubview(fullscreenPhoto)
使用块进行动画调整:
let windowFrame = UIApplication.sharedApplication().windows.first!.frame
UIView.animateWithDuration(0.4, delay: 0.0, options: .CurveEaseInOut, animations: {
fullscreenPhoto.frame = windowFrame
fullscreenPhoto.alpha = 1
fullscreenPhoto.layoutSubviews()
}, completion: { _ in
})
您可以在此处找到现成的解决方案:https://github.com/lukszar/SLImageView
提供了用于显示和隐藏全屏的手势识别器。 你只需要在故事板中将你的UIImageView设置为SLImageView类,所有魔法就完成了。