一、竞技场搭建--UISegmentedControl的使用

 // 重写  自定义控制器的view
- (void)loadView
{
UIImageView *imgView = [[UIImageView alloc] initWithFrame:ChaosScreenBounds]; imgView.image = [UIImage imageNamed:@"NLArenaBackground"];
imgView.userInteractionEnabled = YES; self.view = imgView;
} - (void)viewDidLoad {
[super viewDidLoad]; UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:@[@"足球",@"篮球"]];
// 设置宽度
seg.width += ;
// 默认选中第一个
seg.selectedSegmentIndex = ; // 设置的文字颜色
seg.tintColor = ChaosRGB(, , ); // 设置选中后文字颜色
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSForegroundColorAttributeName] = [UIColor whiteColor];
[seg setTitleTextAttributes:dict forState:UIControlStateSelected]; // 设置背景图片
[seg setBackgroundImage:[UIImage imageNamed:@"CPArenaSegmentBG"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
// 设置选中后的图片
[seg setBackgroundImage:[UIImage imageNamed:@"CPArenaSegmentSelectedBG"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; self.navigationItem.titleView = seg; // // 设置导航控制器navBar的背景图片,,这里是有导航VC的子控制器修改了,不符合封装的思想
// UIImage *image = [UIImage imageNamed:@"NLArenaNavBar64"];
// image = [image stretchableImageWithLeftCapWidth:image.size.width * 0.5 topCapHeight:image.size.height * 0.5];
//
// [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; }

二、搭建发现中的合买--storyboard和代码混合开发

  • 重定义按钮,改变按钮中图片和label的顺序。layoutSubviews方法默认会调用两次,这样位置就会出现偏差,如图黄色框框为偏差

  

 @implementation ChaosTitleView

 #pragma mark - 重新排列按钮内部空间的顺序,原始顺序:图片左,文字右  需求:图片右,文字左
- (void)layoutSubviews
{
[super layoutSubviews];
// layoutSubviews这个方法会来两次,第一次变成自己所需求的。但是第二次来又变了一次,这里判断一下
if (self.titleLabel.x > self.imageView.x) { // 思路,改变x坐标
self.titleLabel.x = self.imageView.x;
self.imageView.x = CGRectGetMaxX(self.titleLabel.frame); }
} @end

三、搭建发现中的幸运选号

--在storyboard中设置红框框中的属性,只能隐藏系统中的TabBar,但是项目中的是自定义的,

--解决办法,自定义TabBar的同时,不要把系统的移除。直接把自定义的加到系统的上面。在viewWillAppear方法中移除系统自带的按钮

--幸运选号的界面背景是张图片,不需要下面的导航条,设置了push后隐藏后,出现push完了之后,还有隐藏导航条的动画问题。以下是点击幸运选号瞬间的截图

--解决办法,自定义背景View,把图片画上去

--图片做动画的方法

--幸运选号界面布局--站位思想。最后将view的alpha设置为0。但是有时候还是会出现,push完后,下面导航条的动画消失,导致整个界面重新布局,代码如下

 // 如果有storyboard,需要在这里布局子控件位置,因为storyboard会先调用updateViewConstraints布局storyboard描述的位置,等它描述完,我们在布局下。
// 如果使用storyboard,在viewDidLoad使用frame布局是不准确的。
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews]; CGFloat screenH = [UIScreen mainScreen].bounds.size.height;
CGFloat screenW = [UIScreen mainScreen].bounds.size.width; CGFloat x = ;
CGFloat w = ;
CGFloat h = ;
int cols = ;
NSUInteger count = self.btns.count;
NSUInteger rows = (count - ) / cols + ;
CGFloat margin = (screenH - rows * ) / (rows + );
int col = ;
int row = ;
int i = ;
CGFloat y = ;
for (UIButton *btn in _btns) {
col = i % cols;
row = i / cols;
y = (margin + h) * row + margin;
if (col == ) {
x = ;
}else{
x = screenW - w;
}
btn.frame = CGRectMake(x, y, w, h); i++;
} }

四、我的彩票界面

--重点是按钮图片被拉伸的不好看。通过鼠标点击设置如下界面,没有效果

--解决方法,拿到按钮,在viewDidLoad方法中获取按钮当前背景图片,并拉伸

iOS彩票项目--第三天,搭建竞技场和发现,搭建幸运选号和我的彩票界面的更多相关文章

  1. 直接拿来用!最火的iOS开源项目(三)

    相比Android,GitHub上的iOS开源项目更可谓是姹紫嫣红.尽管效果各异,但究其根源,却都是因为开发者本身对于某种效果的需求以及热爱.在“直接拿来用!最火的iOS开源项目”系列文章(一).(二 ...

  2. 直接拿来用!最火的iOS开源项目(一~三)

    结束了GitHub平台上“最受欢迎的Android开源项目”系列盘点之后,我们正式迎来了“GitHub上最受欢迎的iOS开源项目”系列盘点.今天,我们将介绍20个在GitHub上非常受开发者欢迎的iO ...

  3. Spring Boot 项目学习 (三) Spring Boot + Redis 搭建

    0 引言 本文主要介绍 Spring Boot 中 Redis 的配置和基本使用. 1 配置 Redis 1. 修改pom.xml,添加Redis依赖 <!-- Spring Boot Redi ...

  4. iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)

    iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)   一.UITabBarController在storyoard中得搭建 1.新建一个项目,把storyb ...

  5. iOS swift项目IM实现,从长连接到数据流解析分析之Socket

    iOS  swift项目IM实现,从长连接到底层数据解析分析之Socket 一:项目简介:  去年开始接手了一个国企移动项目,项目的需求是实现IM即时通讯功能. * 一期版本功能包括了:       ...

  6. iOS -- 开源项目和库

    TimLiu-iOS 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与Toast 对话框 其他UI 动画 侧滑与右滑返回手势 gif动画 ...

  7. GJM :用JIRA管理你的项目(三)基于LDAP用户管理 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  8. 【项目管理和构建】十分钟教程,eclipse配置maven + 创建maven项目(三)

    [项目管理和构建]十分钟教程,eclipse配置maven + 创建maven项目(三) 上篇博文中我们介绍了maven下载.安装和配置(二),这篇博文我们配置一下eclipse,将它和maven结合 ...

  9. GitHub上不错的Android开源项目(三)

    收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) GitHub上不错的Android开源项目(一):http://ww ...

随机推荐

  1. eclipse 中使用中文JAVA api文档

    http://hi.baidu.com/danghj/item/7625a1be20946e43ba0e1202在eclipse中使用中文JAVA api文档Sun 官方的中文版 Java API 文 ...

  2. 利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码

    最近正在进行项目服务的移植工作,即将JAVA服务的程序移植到DotNet平台中. 在JAVA程序中,有个HTTP请求数据头中,包含一个BASE64编码的字符串,例如: eJyVjMENgDAMA1fp ...

  3. C# 中一些类关系的判定方法 C#中关于增强类功能的几种方式 Asp.Net Core 轻松学-多线程之取消令牌

    1.  IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...

  4. socket 请求接收完整的一个http响应(设置recv 接收超时选项SO_RCVTIMEO)

    在前面的系列网络编程文章中,我们都是使用socket 自己实现客户端和服务器端来互相发数据测试,现在尝试使用socket 客户端发 送http 请求给某个网站,然后接收网站的响应数据.http 协议参 ...

  5. C 标准IO 库函数与Unbuffered IO函数

    先来看看C标准I/O库函数是如何用系统调用实现的. fopen(3) 调用open(2)打开指定的文件,返回一个文件描述符(就是一个int 类型的编号),分配一 个FILE 结构体, 通常里面包含了: ...

  6. NYOJ239 月老的难题 【二分图最大匹配&#183;匈牙利】

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 月老准备给n个女孩与n个男孩牵红线.成就一对对美好的姻缘. 如今,因为一些原因,部分男孩与女孩可能结成幸福 ...

  7. bootstrap 多元素共用 popover

    <div class="popover fade bottom in small" role="tooltip" id="gPopover&qu ...

  8. InnoDB Master Thread I/O Rate详解

    一.innodb 在刷盘时要面对的问题: 1.对于innodb 的master thread 这个线程来说,它会在后台执行许多的任务,这些任务大多数都是与IO操作相关的, 比如“刷新脏页到磁盘”.“合 ...

  9. html input select等控件宽度对不齐?请使用box-sizing。

    今天终于明白为什么表单元素的宽度经常对不齐了,原来是计算的问题. 为元素设置:box-sizing: border-box;,则表明width的宽度为内容本身宽度+padding+border(高度一 ...

  10. 【Android】3.0 第3章 百度地图及其应用--预备知识

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.概述 这一章先来点有意思的百度地图应用示例,然后再分章详细介绍用C#开发Android App的各种基本技 ...