ios 一个功能 页面设计和实现思路

图片描述

如图所示, 这个界面是一个视频会议的界面,最上面的窗口是自己的视频窗口,当开启摄像头时,会显示,下面的几个罗列的小窗口, 是其他人的视频窗口(希望是根据人数来动态调整窗口的大小), 如果其他人只开启声音,则只显示头像,如果开启视频则显示视频内容, 最下面的按钮是可以控制声音和视频的按钮。

现已有一个接受视频的接口,作用 : 当有人进入会议开始视频时,服务端会通知到这个接口
func remoteVideoViewWasReady(muxerID: String!, videoView: UIView!) videoView 就是返回的视频窗口内容。

我的思路是

  1. 用普通的view 然后每个视频区域也使用普通的view来填充, 当接收到视频时手动创建一个view 定义好指定的frame, 然后add到当前view上,
  2. 用CollectionView 自定义cell, 里面放view,我还在查看CollectionView相关的用法

存在的疑惑是

  1. 我怎么适应不同设备上的适配,因为是用代码控制添加的view,难道需要用代码来适配?我更喜欢用autolayout来控制
  2. 怎么样能根据人数来动态的计算view 的frame, 这块逻辑应该如何设计?

以上是我的问题, 有可能思路也不对,请大家指教,谢谢

阅读 3.8k
1 个回答

用 view 还是 CollectionView

如果整个界面都是固定的,块的个数、大小都是固定的,且不需要滚动,可以考虑直接用 view 写。否则推荐用 CollectionView。总体来说还是比较推荐用 CollectionView,改起来灵活一些。

我怎么适应不同设备上的适配,因为是用代码控制添加的view,难道需要用代码来适配?

没错,用代码添加就要用代码来适配(也可以用代码添加 autoLayout 约束,不过很繁琐)。用代码适配是很简单的,不需要费额外的功夫。只要在设 frame 的时候,根据 superView 的 frame 或屏幕尺寸来计算 frame,而不要写死比如“320”这样。

怎么样能根据人数来动态的计算view 的frame, 这块逻辑应该也是需要用代码控制吧?

是的。如果用 collectionView ,就只用管 cell 的大小就好了,不用管位置,collectionView 会把位置排好;如果是自己排 view,那就只能用代码算了。需要从上到下一行一行地计算位置。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题