zoukankan      html  css  js  c++  java
  • 对乐库项目的播放列表单元格进行布局

    1 问题

    视图自身也可以使用布局方法layoutSubviews对自己的子视图进行布局,本案例使用视图的layoutSubviews方法给乐库项目的播放列表单元格进行布局,如图1所示:

    2 方案

    首先创建一个SingleViewApplication项目,将Xcode自带的TRViewController类删除,创建一个TRMusicsTableViewController类,继承至UITableViewController,该类有一个NSArray类型的属性musics用于存储歌曲数据源。

    再将Storyboard中自带的场景删除,拖放一个TableViewController到界面中,嵌入一个NavigaitionController。在右边栏的检查器中将TableViewController设置为动态表视图,并和TRMusicsTableViewController类进行绑定。

    其次创建一个带有xib的TRMusicCell类,继承至UITableViewCell,在xib文件中进行自定义cell,往cell的contentView视图上拖放所需要的控件。

    首先在cell的上方拖放一个Label控件,用于显示歌曲的名字。在cell的下方依次拖放两个ImageView控件和两个Label控件,两个ImageView控件分别用于表示歌曲是否为本地歌曲和是否高清。两个Label控件分别用于显示歌曲的信息和时长。

    调整好cell上面各个控件的大小,将个控件关联为TRMusicCell的属性musicNameLabel、albumAndArtistLabel、durationLabel、downloadedImageView以及hdImageView。

    然后再创建一个TRMusic类用于存储歌曲的相关信息,该类继承至NSObject,有五个属性,分别为:

    NSString类型的name,用于记录歌曲名称;

    NSString类型的album,用于记录歌曲所属专辑;

    NSString类型的artist,用于记录歌曲的演唱者;

    NSString类型的duration,用于记录歌曲的时长;

    BOOL类型的highQuality和downloaded,分别用于记录是否高清和是否本地下载。

    我们创建一个TRMusicGroup类,用于生成一组模拟的歌曲数据。

    最后在TRMusicCell类中定义一个TRMusic类型属性music,用于存储单元格需要展示的歌曲。重写layoutSubviews方法,进行cell的界面布局,该方法中会根据每首歌曲的信息,计算子视图的frame进行布局。

    在TRMusicTableViewController类注册Cell,回答三问给表视图加载歌曲数据。

    3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:创建播放列表项目

    首先创建一个SingleViewApplication项目,将Xcode自带的TRViewController类删除,创建一个TRMusicsTableViewController类,继承至UITableViewController,该类有一个NSArray类型的属性musics用于存储歌曲数据源,代码如下所示:

  • 相关阅读:
    Redis 在 分布式项目中 的小应用--分布式锁 模拟session 分布式自增id
    自动生成swagger 前后端分离 对接文档
    利用IDEA 把maven工程中spring-boot的某个模块打成jar包
    利用SQL语句,把本地Excel文件批量导入mysql数据库,做测试数据使用
    Java常用API-String类
    网络编程模型及TCP、UDP编程设计
    计算机网络模型构架分析
    多线程程序的设计详解
    多进程、进程间通讯设计
    Linux 文件编程、时间编程基本函数
  • 原文地址:https://www.cnblogs.com/yhj1787354782/p/5054658.html
Copyright © 2011-2022 走看看