谁可以帮助缩放scrollview。使用“解析”获取图片,但无法进行缩放。 通过所有可能的功能不起作用-这是(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
}
}
答案 0 :(得分:2)
我认为您不需要ScrollView和管理Pagingnation。您需要仅启用分页乏味的分页选项的CollectionView。
在ViewController中拖动集合视图。启用分页选项 从属性选择器。
将CollectionView(leading
,trailing
,top
,bottom
)分配给View(leading
,trailing
,{{ 1}},top
)
将CollectionView单元拖到CollectionView中。调整单元格的大小以填充 整个CollectionView
将Scrollview添加到CollectionView单元格并添加ScrollView(bottom
,
leading
,trailing
,top
)== CollectionView单元格(bottom
,
leading
,trailing
,top
)
在Scrollview中添加imageView并添加imageView(bottom
,
leading
,trailing
,top
)==滚动视图(bottom
,
leading
,trailing
,top
)
并与CollectionView单元格的宽度和高度相等。
bottom
和DataSource
方法。并进行缩放,将以下代码添加到您的CollectionView单元格中
Delegate