表格视图单元格中的滚动视图将无法正确显示图像,并且在 swift 4 中的分页模式下有一个额外的页面

Posted

技术标签:

【中文标题】表格视图单元格中的滚动视图将无法正确显示图像,并且在 swift 4 中的分页模式下有一个额外的页面【英文标题】:scroll view in table view cell won't show correctly images and there is one extra page in paging mode in swift 4 【发布时间】:2018-03-17 11:46:01 【问题描述】:

我在表格视图单元格中使用带有图像的滚动视图但是有两个问题: 1-有一个额外的页面不是我的图像数量和 2:图片没有填满屏幕,每张图片之间有空白

这是我的带有滚动视图代码的表格视图单元格

class scrollViewCell: UITableViewCell , UIScrollViewDelegate 

@IBOutlet weak var pageControl: UIPageControl!
@IBOutlet weak var scrollView: UIScrollView!

var contentWidth : CGFloat = 0.0


override func awakeFromNib() 
    super.awakeFromNib()        

    scrollView.delegate = self
    for image in 0...2 
        let imageToDisplay = UIImage(named : "1")
        let imageView = UIImageView(image : imageToDisplay)

        let xCoordinate = self.contentView.frame.midX + self.contentView.frame.width * CGFloat(image)
        contentWidth += self.contentView.frame.width
        scrollView.addSubview(imageView)

        imageView.frame = CGRect(x: xCoordinate - 50 , y: 0 , width: self.contentView.frame.width, height: 100)

        imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin]
        imageView.contentMode = .scaleAspectFit // OR .scaleAspectFill
        imageView.clipsToBounds = true


    

    scrollView.contentSize = CGSize(width: contentWidth, height: self.contentView.frame.height)





func scrollViewDidScroll(_ scrollView: UIScrollView) 
    pageControl.currentPage = Int(scrollView.contentOffset.x / CGFloat(414))



override func setSelected(_ selected: Bool, animated: Bool) 
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state


【问题讨论】:

你想让图片在宽度和高度上完全填满单元格??? 是的,我想将图像填充到等宽和等高的单元格 【参考方案1】:

你可以试试这个

func addscrollV()

     for image in 0...2 
    let imageToDisplay = UIImage(named : "1")
    let imageView = UIImageView(image : imageToDisplay)

    let xCoordinate = self.contentView.frame.width * CGFloat(image)
    contentWidth += self.contentView.frame.width
    scrollView.addSubview(imageView)

    imageView.frame = CGRect(x: xCoordinate , y: 0 , width: self.contentView.frame.width, height: self.contentView.frame.height)

    imageView.contentMode = .scaleAspectFill
    imageView.clipsToBounds = true
   

   scrollView.contentSize = CGSize(width: contentWidth, height: self.contentView.frame.height)



func layoutSubviews()

  super.layoutSubviews()
   if(Once)
   
     Once = false
     self.addscrollV()
  

【讨论】:

好的,谢谢但是页面指示器不会改变我该如何解决这个问题? 一次(声明为bool var)用作layoutSubviews方法被多次调用,检查页面圆圈颜色是否与图像颜色匹配 对不起,我没明白你的意思,你能用代码告诉我吗?【参考方案2】:

问题在于您的 xCoordinate 计算,contentView 框架在 awakeFromNib 中不可用。

您不应使用super.awakeFromNib 来计算帧数。 创建一个名为

的方法

func configureUI() //Update your UI here

从 UITableViewCell 的 cellForRowAtIndex: 委托方法调用此方法

【讨论】:

我用过但是第一张图片还是有多余的空间 在 xCoordinate 计算中使用 imageview.frame.size.width 我用过,如果我用过,我看不到任何图像

以上是关于表格视图单元格中的滚动视图将无法正确显示图像,并且在 swift 4 中的分页模式下有一个额外的页面的主要内容,如果未能解决你的问题,请参考以下文章

表格视图中单元格内的自动布局图像。正确的布局,但只有一次向下滚动和备份?

表格视图单元格中的图像对齐不正确

单元格中的 UITableView 动画导致平滑滚动中断

将手势识别器添加到表格单元格中的图像视图

图像不适合自定义表格视图单元格中的图像视图

表格视图单元格中的倒数计时器在滚动后显示不同的值