表格视图单元格中的滚动视图将无法正确显示图像,并且在 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 中的分页模式下有一个额外的页面的主要内容,如果未能解决你的问题,请参考以下文章