山寨QQ音乐的布局(一)

学了两天IOS趁着还没忘光,巩固一下所学知识想做点东西,由于自己的设计能力有限,所以就山寨一下吧,说到山寨怎么能忘了腾讯呢,今天发现QQ音乐的设计风格是扁平化的,小清新风格,所以就山寨一下它吧。。

由于本屌没有IPhone手机只能用Ipad运行iphone应用看看QQ音乐的效果,我的ipad是ios7的不知道QQ音乐是不是在IOS6上也是这种风格(想来肯定是的,腾讯的设计能力还是挺厉害的,山寨也是需要实力的不是)。

下面来真格的。。。。


首先是层次,据我观察是一个UITabBarController下面包含四个UINavigationController,每个UINavigationController下面包含UITableViewController(我也不知道对不对,反正我就这么做了)

接下来我们建立一个空的Project新建一个类继承自UITabBarController,这里我就叫RootViewController,然后再Window的代理类中将window的根控制器设置为我们新建的rootViewController,


 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2 {
3 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
4 // Override point for customization after application launch.
5 self.window.backgroundColor = [UIColor whiteColor];
6
7 RootViewController *rootViewController = [[RootViewController alloc] init];
8 [self.window setRootViewController:rootViewController]; //设置跟控制器为我们新建的RootViewController,其实就是设置为UITabBarController
9
10 [self.window makeKeyAndVisible];
11 return YES;
12 }

然后就是在UITabBarController中设置四个UINavigationController主要实现代码如下


 1     //设置UItabBar的高度为50
2 self.tabBar.frame = CGRectMake(0, CGRectGetHeight([[UIScreen mainScreen] bounds]) - 50, CGRectGetWidth([[UIScreen mainScreen] bounds]), 50);
3
4
5 if (IOS_7) {
6 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, [UIFont fontWithName:@"Arial" size:0.0], UITextAttributeFont,nil] forState:UIControlStateHighlighted]; //设置UITabBarItem高亮时title的颜色为白色
7 }
8 else{
9 [[UITabBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor] size:CGSizeMake(1, 50)]]; //使用纯色图片填充IOS默认的UITabBar
10 [[UITabBar appearance] setSelectionIndicatorImage:[UIImage new]];//去掉IOS6选中时的高光效果
11 //设置IOS6的UINagitationBar的颜色为白色
12 [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor] size:CGSizeMake(1, 44)] forBarMetrics:UIBarMetricsDefault];
13 }
14
15 //Universal
16 //设置IOS6和IOS7的UINavigationBar上的字体统一为黑色
17 [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor], UITextAttributeTextColor, [UIFont fontWithName:@"Arial" size:20 ], UITextAttributeFont, [UIFont boldSystemFontOfSize:20], NSFontAttributeName, [NSValue valueWithUIOffset:UIOffsetZero], UITextAttributeTextShadowOffset, nil]];
18
19
20 //我的音乐
21 MyMusicViewController *myMusicView = [[MyMusicViewController alloc] init];
22 UINavigationController *myMusicNavigation = [[UINavigationController alloc] initWithRootViewController:myMusicView];
23 myMusicNavigation.tabBarItem = [UITabBarItem initCustomWithImage:@"mymusic" withSelectedImage:@"mymusicSelected" withTitle:@"我的音乐"];
24
25 //音乐馆
26 MusicHallViewController *musicHallView = [[MusicHallViewController alloc] init];
27 UINavigationController *musicHallNavigation = [[UINavigationController alloc] initWithRootViewController:musicHallView];
28 musicHallNavigation.tabBarItem = [UITabBarItem initCustomWithImage:@"musicHall" withSelectedImage:@"musicHallSelected" withTitle:@"音乐馆"];
29
30 //发现
31 FinderViewController *finderView = [[FinderViewController alloc] init];
32 UINavigationController *finderNavigation = [[UINavigationController alloc] initWithRootViewController:finderView];
33 finderNavigation.tabBarItem = [UITabBarItem initCustomWithImage:@"finder" withSelectedImage:@"finderSelected" withTitle:@"发现"];
34
35 //更多
36 MoreViewController *moreView = [[MoreViewController alloc] init];
37 UINavigationController * moreNavigation = [[UINavigationController alloc] initWithRootViewController:moreView];
38 moreNavigation.tabBarItem = [UITabBarItem initCustomWithImage:@"more" withSelectedImage:@"moreSelected" withTitle:@"更多"];
39
40
41 NSArray *viewControllers = [NSArray arrayWithObjects:myMusicNavigation, musicHallNavigation, finderNavigation, moreNavigation, nil];
42 [self setViewControllers:viewControllers];

代码中的IOS_7是一个宏定义

1 #define IOS_7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)

创建UITabBarItem的方法我写在了一个Category中定义了一个类方法


 1 + (UITabBarItem *) initCustomWithImage:(NSString *)image withSelectedImage:(NSString *)selectedImage withTitle:(NSString *)title
2 {
3 UIEdgeInsets insets = UIEdgeInsetsMake(6, 0, -6, 0); //UITabBarItem的偏移量 上左下右
4 UIImage *myImage = [UIImage imageNamed:image];
5 UIImage *myImageSelected = [UIImage imageNamed:selectedImage];
6 UITabBarItem *myTabBarItem = [[UITabBarItem alloc] init];
7 myTabBarItem.imageInsets = insets;
8 myTabBarItem.title = title;
9 if (IOS_7) {
10 myTabBarItem.image = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
11 myTabBarItem.selectedImage = [myImageSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
12 }
13 else
14 {
15 [myTabBarItem setFinishedSelectedImage:myImageSelected withFinishedUnselectedImage:myImage];
16 }
17 return myTabBarItem;
18 }

为了在IOS6和IOS7中都是用同样的扁平化风格,需要对IOS6作特别的设置,需要将UINavigationBar和UIBabBar的背景用纯色图片填充,title的字体样式也要设置为统一风格,具体的一下做法可以参考如下博客

http://esoftmobile.com/2014/01/14/build-ios6-ios7-apps/

由于初学 水平有限 刚开了个头 写了个初步布局 先到这里 还有一些问题没有解决 来张图片

 

虽然IOS6和IOS7是初步统一了样式,但是官方的我的音乐是在左边的,不知道怎么弄过去了。。。,请高人赐教。。。

时间: 2024-11-02 11:07:04

山寨QQ音乐的布局(一)的相关文章

山寨QQ音乐的布局(二)终于把IOS6的UITableView拍扁了

IOS应用开发中UITableView的应用十分广泛,但是IOS7神一样的把UITableView拍扁了,这样一来IOS6的UITableView不干了,就吵着也要被拍扁,那好吧我今天就成全了你... 继上回书说道初步实现了一个QQ音乐的框架,但这远远不够,我是一个追求细节的人(就像锤子科技的老罗一样),怎么可能就这就结束了呢,下一步实现以下登陆的ModalView,比较简单没啥可说的直接上代码: 1 UIColor *normalColor = [UIColor colorWithRed:28

swift版QQ音乐播放器(二)

一 完善部分的QQ音乐效果图 二 需要完善点 1 歌曲的切换和暂停播放 2 歌曲当前播放时间和歌曲总时间的更新 3 进度条的处理 4 歌手头像处理 5 头像动画效果 6 歌词的进度显示 8 完善细节 三 添加歌曲展示页面中的动画效果 1 代码书写位置 : 由于展示歌词的控制器的UITableViewController,那么我们可以使用代理方法.当用户拖动tableView的时候,会调用一个方法,在该方法中实现动画效果 2 思路 : 通过拿到第一个cell和最后一个cell来计算中间cell的索

vivo Hi-Fi+QQ音乐 数字音乐市场的一剂良方

据悉,最近风头正劲的手机品牌vivo与QQ音乐继6月30日X7发布会宣布战略合作以来,终于有了大动作:双方达成vivo内置APP的资源共享,并将展开更亲密的合作. 为了将主打的Hi-Fi功能发挥极致,vivo手机内置有Hi-Fi播放器"i音乐",让用户体验真正的高品质Hi-Fi音乐.根据目前了解的资讯看,i音乐将内置QQ音乐的正版曲库,vivo手机用户使用vivo账户登录i音乐,即可使用Hi-Fi播放器畅享海量的正版高保真无损音乐. 配图:vivo与QQ音乐正式开启战略合作 步入版权时

QQ音乐API分析

QQ音乐API分析 官网提供API 说明:此API主要针对移动端直接调用QQ音乐API用,API只能在QQAPP内执行,上线时间尚短. http://y.qq.com/m/api/api.html 分析的API 说明: 根据官网https://y.qq.com/分析的API,经过测试,可以使用,测试demo如下,demo流程 1.首先根据关键字搜索歌曲>获取播放key>获取播放地址播放 https://192.168.60.50:8443/admin/public/music 经分析,也可不用

音乐API之QQ音乐

欢迎大家来到我的博客,这是我在博客园写的第一篇文章,但不会是最后一篇,希望大家多多关注我,支持我哦!正文开始,今天我们要讲的是QQ音乐的API,都是来源于官方的地址,以前我也想写一个,但百度谷歌之后都是一些很久以前的,而今天的是我从QQ音乐客户端抓包而来,希望大家喜欢. 本教程的示例代码为C# WPF,其他语言也可以,最关键的还是API嘛.首先我们需要搜索到音乐,取出他的各类值,才能进行播放http://59.37.96.220/soso/fcgi-bin/client_search_cp?fo

将 QQ 音乐、网易云音乐和虾米音乐资源「整合」一起的Chrome 扩展Listen 1

原文地址:http://whosmall.com/?post=418 本文标签: Chrome扩展 Chrome浏览器 Chrome扩展Listen1 音乐资源整合 Listen1安装方法 在 Chrome 上安装了这款名为 Listen 1 的插件,妈妈可是再也不用担心你找不到想听的歌了.它将 QQ 音乐.网易云音乐以及虾米音乐的音乐资源「整合」在了一起,你只需要输入音乐关键词,就可以方便地三大曲库中跳转搜索. 安装方法 Listen 1 的安装方法与一般的 Chrome Extension

轻仿QQ音乐之音频歌词播放、锁屏歌词-b

先上效果图 歌词播放界面 音乐播放界面 锁屏歌词界面 一. 项目概述 前面内容实在是太基础..只想看知识点的同学可以直接跳到第三部分的干货 项目播放的mp3文件及lrc文件均来自QQ音乐 本文主要主要讲解锁屏歌词的实现,音频.歌词的播放网上资源略多,因此不做重点讲解,项目也是采取最简单的MVC+storyboard方式 项目GitHub地址: https://github.com/PengfeiWang666/WPFMusicPlayer 音乐模型-->WPFMusic /** 图片 */ @p

QQ音乐API

今天分享的是QQ音乐API 搜索歌曲API:http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0& amp;n={2}&aggr=1&cr=1&loginUin={3}&format=json&inCharset=GB2312&outCharset=utf-8&notice=0&platform=jqminiframe.json&needNewCode=0&a

QQ音乐/酷狗音乐锁屏控制实现原理

我实现的效果 混乱的锁屏控制 Android自4.0版本, 也就是API level 14开始, 加入了锁屏控制的功能, 相关的类是RemoteControlClient, 这个类在API level 21中被标记为deprecated, 被新的类MediaSession所替代. 我们的音乐App中最开始使用的是原生锁屏控制API, 说实话这个API不好用, 遇到了一些小坑, 最要命的是不同品牌的手机, 锁屏界面长的还不一样, 就连我自己都没见过原生4.0的锁屏控制界面是什么样的. 国内的手机厂