【发布时间】:2017-10-02 15:52:55
【问题描述】:
使用 Swift,我想单击一个较小的图像视图,然后将其扩展到设备的全屏,再次单击以返回到之前的默认大小。
这是我拥有的代码,但是当单击它时,它不会像中那样扩展到全屏,而是扩展到视图宽度。
我的主视图顶部有一个弹出 UIView 以显示为弹出窗口,并且图像扩展到该弹出视图而不是整个屏幕。
如何实现 imageView 的全屏显示?
@IBOutlet var backgroundView: UIView!
@IBOutlet weak var popUpView: UIView!
@IBOutlet weak var iconImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
iconImage.addGestureRecognizer(tapGesture)
}
@IBAction func handleTap(_ gesutureRecognizer: UITapGestureRecognizer) {
let screenSize = UIScreen.main.bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height
iconImage.frame = CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight)
}
【问题讨论】:
-
子视图会和superview绑定,如果直接的superview不是全屏的,那么subview怎么办?
-
如果您在代码中创建
handleTap(_:)和@IBAction,为什么?将@IBAction更改为@objc,看看是否有区别。 -
在更改框架后尝试在
iconImage上调用layoutIfNeeded() -
您的图像视图使用什么内容模式?按比例填充?方面填充?方面适合?
-
即使你解决了这个问题(我相信你会的,在我看来并不难),imageView 会改变它的框架而没有动画,这不是最好的用户体验。尝试更改 iconImage 框架动画 - 您可以通过更改自动布局约束或直接为框架设置动画来做到这一点。
标签: ios swift uiview uiimageview