如何使用滚动视图和pageController显示图像和信息
我想在UIScrollView和pageViewController中显示一些图像,因为每个图像都有不同的信息,所以现在我能够做到这一点,但我想显示当我更改图片时,我的意思是当我将照片更改为另一张照片时,我想要显示其他照片和关于该照片的信息,我想要在代码中显示的信息是名为“labelList”的数组和我显示的图像命名为imageList。如何使用滚动视图和pageController显示图像和信息
class PremiosViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet var myImageView: UIImageView!
let imagelist = ["img_1", "img_2", "img_3"]
let labelList = ["label_1", "label_2", "label_3"]
var scrollView = UIScrollView()
var pageControl : UIPageControl = UIPageControl(frame:CGRect(x: 50, y: 250, width: 200, height: 50))
var yPosition:CGFloat = 0
var scrollViewContentSize:CGFloat=0;
override func viewDidLoad() {
super.viewDidLoad()
scrollView = UIScrollView(frame: CGRect(x: 0, y: 270, width: self.view.frame.width, height: 300))
configurePageControl()
scrollView.delegate = self
self.view.addSubview(scrollView)
for i in stride(from: 0, to: imagelist.count, by: 1) {
var frame = CGRect.zero
frame.origin.x = self.scrollView.frame.size.width * CGFloat(i)
frame.origin.y = -100
frame.size = self.scrollView.frame.size
self.scrollView.isPagingEnabled = true
let myImage:UIImage = UIImage(named: imagelist[i])!
let myImageView:UIImageView = UIImageView()
myImageView.image = myImage
myImageView.contentMode = UIViewContentMode.scaleAspectFit
myImageView.frame = frame
scrollView.addSubview(myImageView)
}
self.scrollView.contentSize = CGSize(width: self.scrollView.frame.size.width * CGFloat(imagelist.count), height: self.scrollView.frame.size.height)
pageControl.addTarget(self, action: Selector(("changePage:")), for: UIControlEvents.valueChanged)
pageControl.addTarget(self, action: Selector(("changePage:")), for: UIControlEvents.valueChanged)
// Do any additional setup after loading the view.
}
func configurePageControl() {
// The total number of pages that are available is based on how many available colors we have.
self.pageControl.numberOfPages = imagelist.count
self.pageControl.currentPage = 0
self.pageControl.tintColor = UIColor.clear
self.pageControl.pageIndicatorTintColor = UIColor.clear
self.pageControl.currentPageIndicatorTintColor = UIColor.clear
self.view.addSubview(pageControl)
}
// MARK : TO CHANGE WHILE CLICKING ON PAGE CONTROL
func changePage(sender: AnyObject) ->() {
let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width
scrollView.setContentOffset(CGPoint(x: x,y :0), animated: true)
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let pageNumber = round(scrollView.contentOffset.x/scrollView.frame.size.width)
pageControl.currentPage = Int(pageNumber)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func clickBackButton(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
}
您可以使用UICollectionView显示内部UICllectionViewCell影像和信息水平滚动。
是的,我认为,但在应用程序设计是不是这样,所以我不得不适应代码。 :( – delbertoms
如果想显示在短短的UILabel
的信息,那么你可以做一个类似的方法,告诉你如何添加您的多个UIImageView
,你可以在你的代码中添加UILabel
以及
例如在这里你已经写:
let myImage:UIImage = UIImage(named: imagelist[i])!
let myImageView:UIImageView = UIImageView()
myImageView.image = myImage
myImageView.contentMode = UIViewContentMode.scaleAspectFit
myImageView.frame = frame
// TODO: I added this here
scrollView.addSubview(myImageView)
我加了TODO
评论那里只是为了告诉你,你可以通过执行添加UILabel
也:
let myLabel = UILabel();
myLabel.text = labelList[i]
myLabel.textAlignment = .center
var labelFrame = CGRect(x: self.scrollView.frame.size.width * CGFloat(i), y: frame.size.height - 100, width: frame.size.width, height: 100)
myLabel.frame = labelFrame
和你的代码线以下scrollView.addSubview(myImageView)
可以再加入你的UILabel
还有:
scrollView.addSubview(myLabel)
谢谢你现在在工作,我申请你的例子,它的工作正常。再次感谢。 – delbertoms
类似于你一个UIImageView添加到滚动视图的方式,你能不能添加一个UILabel呢? –
嗯,我试过,但我可以做到。 – delbertoms