如图所示, 这个界面是一个视频会议的界面,最上面的窗口是自己的视频窗口,当开启摄像头时,会显示,下面的几个罗列的小窗口, 是其他人的视频窗口(希望是根据人数来动态调整窗口的大小), 如果其他人只开启声音,则只显示头像,如果开启视频则显示视频内容, 最下面的按钮是可以控制声音和视频的按钮。
现已有一个接受视频的接口,作用 : 当有人进入会议开始视频时,服务端会通知到这个接口func remoteVideoViewWasReady(muxerID: String!, videoView: UIView!)
videoView
就是返回的视频窗口内容。
我的思路是
- 用普通的view 然后每个视频区域也使用普通的view来填充, 当接收到视频时手动创建一个view 定义好指定的frame, 然后add到当前view上,
- 用CollectionView 自定义cell, 里面放view,我还在查看CollectionView相关的用法
存在的疑惑是
- 我怎么适应不同设备上的适配,因为是用代码控制添加的view,难道需要用代码来适配?我更喜欢用autolayout来控制
- 怎么样能根据人数来动态的计算view 的frame, 这块逻辑应该如何设计?
以上是我的问题, 有可能思路也不对,请大家指教,谢谢
如果整个界面都是固定的,块的个数、大小都是固定的,且不需要滚动,可以考虑直接用 view 写。否则推荐用 CollectionView。总体来说还是比较推荐用 CollectionView,改起来灵活一些。
没错,用代码添加就要用代码来适配(也可以用代码添加 autoLayout 约束,不过很繁琐)。用代码适配是很简单的,不需要费额外的功夫。只要在设 frame 的时候,根据 superView 的 frame 或屏幕尺寸来计算 frame,而不要写死比如“320”这样。
是的。如果用 collectionView ,就只用管 cell 的大小就好了,不用管位置,collectionView 会把位置排好;如果是自己排 view,那就只能用代码算了。需要从上到下一行一行地计算位置。