ios - 无法使用 Parse 在滚动视图中缩放 UIImage
问题描述
谁可以帮助缩放滚动视图。使用 Parse 获取图片,但不能进行缩放。通过所有可能的功能都不起作用 - aImg 这是(UIImage)到 setupPhotosInScrollView 功能,有人可以帮忙吗?尝试过的框架,但没有任何帮助
代码
class AdPhotos: UIViewController, UIScrollViewDelegate {
/*--- VIEWS ---*/
@IBOutlet weak var containerScrollView: UIScrollView!
/*--- VARIABLES ---*/
var adObj = PFObject(className: ADS_CLASS_NAME)
var photosArray = [UIImage]()
// ------------------------------------------------
// MARK: - VIEW DID LOAD
// ------------------------------------------------
override func viewDidLoad() {
super.viewDidLoad()
// Ad Title
adTitleLabel.text = "\(adObj[ADS_TITLE]!)"
// Get photos
let imageFile = adObj[ADS_IMAGE1] as? PFFile
imageFile?.getDataInBackground(block: { (data, error) in
if error == nil { if let imageData = data {
self.photosArray.append(UIImage(data: imageData)!)
self.setupPhotosInScrollView()
print("PHOTO 1")
}}})
DispatchQueue.main.async {
if self.adObj[ADS_IMAGE2] != nil {
self.pageControl.numberOfPages = 2
let imageFile = self.adObj[ADS_IMAGE2] as? PFFile
imageFile?.getDataInBackground(block: { (data, error) in
if error == nil { if let imageData = data {
self.photosArray.append(UIImage(data: imageData)!)
self.setupPhotosInScrollView()
print("PHOTO 2")
}}})
}
if self.adObj[ADS_IMAGE3] != nil {
self.pageControl.numberOfPages = 3
let imageFile = self.adObj[ADS_IMAGE3] as? PFFile
imageFile?.getDataInBackground(block: { (data, error) in
if error == nil { if let imageData = data {
self.photosArray.append(UIImage(data: imageData)!)
self.setupPhotosInScrollView()
print("PHOTO 3")
}}})
}
if self.adObj[ADS_IMAGE4] != nil {
self.pageControl.numberOfPages = 4
let imageFile = self.adObj[ADS_IMAGE4] as? PFFile
imageFile?.getDataInBackground(block: { (data, error) in
if error == nil { if let imageData = data {
self.photosArray.append(UIImage(data: imageData)!)
self.setupPhotosInScrollView()
print("PHOTO 4")
}}})
}
if self.adObj[ADS_IMAGE5] != nil {
self.pageControl.numberOfPages = 5
let imageFile = self.adObj[ADS_IMAGE5] as? PFFile
imageFile?.getDataInBackground(block: { (data, error) in
if error == nil { if let imageData = data {
self.photosArray.append(UIImage(data: imageData)!)
self.setupPhotosInScrollView()
print("PHOTO 5")
}}})
}
}
}
// ------------------------------------------------
// MARK: - SETUP PHOTOS IN SCROLLVIEW
// ------------------------------------------------
@objc func setupPhotosInScrollView() {
var X:CGFloat = 0
let Y:CGFloat = 0
let W:CGFloat = view.frame.size.width
let H:CGFloat = view.frame.size.height
let G:CGFloat = 0
var counter = 0
// Loop to create ImageViews
for i in 0..<photosArray.count {
counter = i
// Create a ImageView
let aImg = UIImageView(frame: CGRect(x: X, y: Y, width: W, height: H))
aImg.tag = i
aImg.contentMode = .scaleAspectFit
aImg.image = photosArray[i]
// Add ImageViews based on X
X += W + G
containerScrollView.addSubview(aImg)
} // ./ FOR loop
// Place Buttons into a ScrollView
containerScrollView.contentSize = CGSize(width: W * CGFloat(counter+2), height: H)
}
// ------------------------------------------------
// MARK: - CHANGE PAGE CONTROL PAGES ON SCROLL
// ------------------------------------------------
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let pageWidth = containerScrollView.frame.size.width
let page = Int(floor((containerScrollView.contentOffset.x * 2 + pageWidth) / (pageWidth * 2)))
pageControl.currentPage = page
}
}
解决方案
我认为您不需要 ScrollView 和管理 Pagingnation。您需要 CollectionView 只需启用 Paging 选项 From story-bored。
在您的 ViewController 中拖动 Collection View。从属性选择器启用分页选项。
将 CollectionView(
leading
,trailing
,top
,bottom
) 分配给 View(leading
,trailing
,top
,bottom
)将 CollectionView 单元格拖到 CollectionView 中。调整单元格以填充整个 CollectionView
将 Scrollview 添加到 CollectionView 单元格中并添加 ScrollView(
leading
,trailing
,top
,bottom
) == CollectionView cell(leading
,trailing
,top
,bottom
)在 Scrollview 中添加 imageView 并将 imageView(
leading
,trailing
,top
,bottom
) == Scrollview (leading
,trailing
,top
,bottom
) 和相等的宽度和高度添加到 CollectionView 单元格。- CollectionView 的实现
DataSource
和方法。Delegate
和缩放添加以下代码到您的 CollectionView 单元格
import UIKit
class CustomeCellCollectionViewCell: UICollectionViewCell , UIScrollViewDelegate {
@IBOutlet var imageView : UIImageView!
@IBOutlet var scrollView : UIScrollView!
override func awakeFromNib() {
super.awakeFromNib()
scrollView.delegate = self
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 6.0
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return feedsImageView
}
}
推荐阅读
- javascript - Next.js API 将 FormData 转发到外部 API
- swift - Swift中大括号后跟类名的语法含义
- sql - 有没有办法在不使用子查询的情况下根据不同的行计算平均值?
- algorithm - 如何通过替换循环来最小化图的顶点?
- python - 为什么不和谐机器人不说话?
- python - 无法使用 Python 中的发布请求获取下一页数据
- python - 无法从 python 扫描仪的列表中删除新行
- r - 通过平均所有点将多个栅格合并为一个最终栅格
- java - 如何从 Java 中的字符串中获取变量值?
- python - 我的python浏览器没有下载任何东西