在UIScrollView中添加子视图的位置

时间:2014-03-05 14:12:52

标签: ios iphone objective-c cocoa-touch uiscrollview

是否有一些“最佳实践”方法可以将子视图添加到UIScrollView

例如:

我有一个UIViewController从服务器加载带有相应描述的图像。 那些图像+描述应该添加到水平scrollView中。

加载数据后,我是否应该在UIView中创建一个方法来处理这些内容, 或者在我的UIViewController

中执行此操作会更方便吗?

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您的视图控制器将是最适合处理此问题的地方,因为控制器应将您的视图(滚动视图)连接到数据(图像)。

如果滚动视图的布局很简单,可以完全使用控制器完成。但是,如果布局很复杂,您可能需要考虑子类化UIScrollView并处理其中的一些布局(类似于UITableView的工作方式)。

有关标准应用程序架构的更多信息,请阅读Apple开发者网站上的Concepts in Objective-C Programming

答案 2 :(得分:0)

按照我的看法,关注点的分离会像这样分解:

  • UIViewController负责获取图片并将其交给UIView
  • UIView负责显示它们。

因此-addSubview:是一个视图实现细节,应该放在视图中,并且对控制器不透明。

有很多观点认为UIViewControllerUIView混淆并交织在一起,使它们成为概念“观点”的一部分(在MVC意义上),但我认为它仍然更加清洁。

如您所见,意见不同。 :)就个人而言,我对MVC绝望,并认为Model-View-ViewModel是一种更清晰,更清洁,更明智的方式来接近这一切。

答案 3 :(得分:0)

UICollectionView与UITableView的相同,只是它用于显示图像及其描述。

这是你可以做的。

  1. 创建一个UICollectionView,它是UIScrollView的子类。所以不需要UIScrollview。
  2. 由于每个项目都需要图像和描述,我建议从UICollectionView中删除UICollectionViewItem。
  3. 创建一个单独的自定义UICollectinViewItem类,在.xib文件(UIImageVIew和UILabel)中定义UICollectionItem。
  4. 当您定义数据源方法“ - collectionView:cellForItemAtIndexPath:”时,请在此处定义UICollectionVIewItem类。我们确切地定义了自定义UITableVIewCell。