【发布时间】:2019-07-25 20:27:14
【问题描述】:
我的应用有一项功能,您可以在其中回答有关您关注的人的问题,例如(选项 A、B、C、D 是用户名称所在的位置):
这个想法是你回答一个关于用户的问题,它会从你在 firebase 数据库中关注的人中随机排列。图片是用户在注册时上传的个人资料图片,按照问题答案的左上角、右上角、左下角、右下角的顺序显示。
我正在尝试使用 UIScrollView,但所有图像都堆叠在一起,而不是能够在它们之间滑动(并且问题标签已经消失)
有没有办法让 ScrollView 工作,或者有没有更好/更有效的方法来集成 UICollectionView(我已经看到一些帖子推荐了类似的东西)?
我是新手,如果有任何帮助,我将不胜感激,在此先感谢 :)
更新:
我已经编辑了约束,因此图像视图的左右锚点应该是正确的,并在情节提要的 UIScrollView 顶部添加了一个 UIView。我还看到它可以用 UIPageViewController 来完成?
@IBOutlet weak var userImageScrollView: UIScrollView!
@IBOutlet weak var contentView: UIView!
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var optionA: UIButton!
@IBOutlet weak var optionB: UIButton!
@IBOutlet weak var optionC: UIButton!
@IBOutlet weak var optionD: UIButton!
func setupLayout() {
userImageScrollView.isPagingEnabled = true
userImageScrollView.isScrollEnabled = true
userImageScrollView.addSubview(imageViewA)
imageViewA.translatesAutoresizingMaskIntoConstraints = false
imageViewA.widthAnchor.constraint(equalTo: userImageScrollView.widthAnchor).isActive = true
imageViewA.heightAnchor.constraint(equalTo: userImageScrollView.heightAnchor).isActive = true
imageViewA.topAnchor.constraint(equalTo: userImageScrollView.topAnchor).isActive = true
imageViewA.bottomAnchor.constraint(equalTo: userImageScrollView.bottomAnchor).isActive = true
imageViewA.leftAnchor.constraint(equalTo: userImageScrollView.leftAnchor)
imageViewA.rightAnchor.constraint(equalTo: imageViewB.leftAnchor)
imageViewA.contentMode = .scaleAspectFit
userImageScrollView.addSubview(imageViewB)
imageViewB.translatesAutoresizingMaskIntoConstraints = false
imageViewB.widthAnchor.constraint(equalTo: userImageScrollView.widthAnchor).isActive = true
imageViewB.heightAnchor.constraint(equalTo: userImageScrollView.heightAnchor).isActive = true
imageViewB.bottomAnchor.constraint(equalTo: userImageScrollView.bottomAnchor).isActive = true
imageViewB.leftAnchor.constraint(equalTo: imageViewA.rightAnchor)
imageViewA.rightAnchor.constraint(equalTo: imageViewC.leftAnchor)
imageViewB.contentMode = .scaleAspectFit
userImageScrollView.addSubview(imageViewC)
imageViewC.translatesAutoresizingMaskIntoConstraints = false
imageViewC.widthAnchor.constraint(equalTo: userImageScrollView.widthAnchor).isActive = true
imageViewC.heightAnchor.constraint(equalTo: userImageScrollView.heightAnchor).isActive = true
imageViewC.bottomAnchor.constraint(equalTo: userImageScrollView.bottomAnchor).isActive = true
imageViewC.leftAnchor.constraint(equalTo: imageViewB.rightAnchor)
imageViewC.rightAnchor.constraint(equalTo: imageViewD.leftAnchor)
imageViewC.contentMode = .scaleAspectFit
userImageScrollView.addSubview(imageViewD)
imageViewD.translatesAutoresizingMaskIntoConstraints = false
imageViewD.widthAnchor.constraint(equalTo: userImageScrollView.widthAnchor).isActive = true
imageViewD.heightAnchor.constraint(equalTo: userImageScrollView.heightAnchor).isActive = true
imageViewD.bottomAnchor.constraint(equalTo: userImageScrollView.bottomAnchor).isActive = true
imageViewD.leftAnchor.constraint(equalTo: imageViewC.rightAnchor)
imageViewD.rightAnchor.constraint(equalTo: userImageScrollView.rightAnchor)
imageViewD.contentMode = .scaleAspectFit
self.userImageScrollView.delegate = self
}
【问题讨论】:
-
是的,您可以为此使用 UICollectionView。它允许您拥有 n 个图像
-
我将如何使用 UICollectionView?由于我只想显示用户的 4 张个人资料图片(每个问题都不再显示),所以 UIScrollView 不能吗?
-
UIScrollView 可以,但 UICollectionView 更容易
-
您好!它们在您的示例中堆叠的原因是因为您有
imageViewC.bottomAnchor.constraint(equalTo: userImageScrollView.bottomAnchor).isActive = true而不是imageViewC.topAnchor.constraint(equalTo: imageViewB.bottomAnchor).isActive = true
标签: ios swift uiscrollview uicollectionview firebase-storage