一、竞技场搭建--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. WordPress 博客文章中google adsense广告展示方法之一

    http://log.medcl.net/item/2011/08/diving-into-elasticsearch-4-installation-and-configuration/ 看到这个网站 ...

  2. 【js】右下角浮动窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. RabbitMQ与.net core(一)安装

    一.安装Erlang环境 前提:erlang版本与rabbitmq版本需按照要求对应!!! 1.在安装erlang之前先安装下依赖文件(这一步不要忘掉了, 不然后面./configure的时候要报错) ...

  4. linux的cat命令

    1 描述 cat 的全称 concatenate files and print on the standard output cat命令事Linux下的一个文本输出命令. 用于链接文件并打印到标准输 ...

  5. pcurl 学习 http文件下载及写入空设备文件实例

    import pycurl import sys import os import random import string import time class Transaction(object) ...

  6. C# 查看动态库的方法

    使用Vs自带工具:开始菜单-->Microsoft Visual Studio 2010--> Visual Studio Tools-->Visual Studio 命令提示符 输 ...

  7. appium +uiautomator2 遇到 deviceName can't be blank 提示的解决

    为了获取android toast ,需要升级selenium 到 3.4.0 和appium 5.0.0-BETA9 到最新版本,并在启动代码前面追加一行代码: capabilities.setCa ...

  8. C/C++ 数据结构之算法(面试)

    数据结构中的排序算法. 排序算法的相关知识: (1)排序的概念:所谓排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来. (2)稳定的排序方法:在待排序的文件中,若存在多个关键字相同的 ...

  9. vim:查看当前的配置文件名称和地址

    vim把当前使用的配置文件地址放置在变量MYVIMRC中.在vim使用echo查看即可: :echo $MYVIMRC

  10. C#使用CodeDom动态加载cs文件

    public static object Create(string path) { var provOptions = new Dictionary<string, string>(); ...