作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
[After scrolling : Problem White Screen] 1
[Before Zoom image setted aspect ratio]
我正在实现一个照片查看页面,其中只包含一张照片。功能:缩放。
由于图像的尺寸为 1024x510。我已经实现了纵横比并将 imageview 框架设置为屏幕尺寸。我已经使用 Scrollview 和 imageview 概念实现了。
问题是,当我缩放图像时,白屏也会被缩放。问题是缩放时 imageview 的空白区域。.代码
override func viewDidLoad() {
super.viewDidLoad()
print(imageIndex)
self.scrollV.maximumZoomScale = 5.0
self.scrollV.minimumZoomScale = 1.0
self.scrollV.contentSize = self.view.bounds.size;
self.scrollV.delegate = self
let urlStr : NSString = vehicleImages[imageIndex].stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
url=NSURL(string: urlStr as String)
imageView.kf_setImageWithURL(url,placeholderImage: UIImage(named: "placeholder.png"))
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imageView
}
最佳答案
看看这些方法。可能会有帮助。我将 ScrollView 拉伸(stretch)到 Controller 的 View 大小。 customizeScrollView()
将计算最小和最大比例选项。 centerImageView()
会将 UIImageView 放在你的 UIScrollView 的中心
fileprivate func customizeScrollView() {
guard let image = imageView?.image else { return }
var minZoom = fmin(self.view.frame.width / image.size.width, self.view.frame.height / image.size.height)
minZoom = fmin(1.0, minZoom)
scrollView?.contentSize = image.size
scrollView?.minimumZoomScale = minZoom
scrollView?.addSubview(self.imageView!)
scrollView?.setZoomScale(minZoom, animated: false)
centerImageView()
}
fileprivate func centerImageView() {
guard let imageView = imageView else { return }
guard let scrollView = scrollView else { return }
let boundsSize = scrollView.bounds.size
var frameToCenter = imageView.frame
// Center horizontally
if frameToCenter.size.width < boundsSize.width {
frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2
} else {
frameToCenter.origin.x = 0
}
// Center vertically
if frameToCenter.size.height < boundsSize.height {
frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2
} else {
frameToCenter.origin.y = 0
}
imageView.frame = frameToCenter
}
还有 UIScrollViewDelegate 方法:
/// `UIScrollViewDelegate` protocol implementation
extension ImagePreviewController: UIScrollViewDelegate {
public func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
public func scrollViewDidZoom(_ scrollView: UIScrollView) {
centerImageView()
}
}
关于ios - 如何使照片缩放,设置纵横比然后缩放在 Swift 中留下白色区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43869355/
我有一张 table 。我希望它的数据垂直和水平居中。 我使用了 align="center"valign="middle" ,但它没有用。
我是一名优秀的程序员,十分优秀!