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

  1. // 重写 自定义控制器的view
  2. - (void)loadView
  3. {
  4. UIImageView *imgView = [[UIImageView alloc] initWithFrame:ChaosScreenBounds];
  5.  
  6. imgView.image = [UIImage imageNamed:@"NLArenaBackground"];
  7. imgView.userInteractionEnabled = YES;
  8.  
  9. self.view = imgView;
  10. }
  11.  
  12. - (void)viewDidLoad {
  13. [super viewDidLoad];
  14.  
  15. UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:@[@"足球",@"篮球"]];
  16. // 设置宽度
  17. seg.width += ;
  18. // 默认选中第一个
  19. seg.selectedSegmentIndex = ;
  20.  
  21. // 设置的文字颜色
  22. seg.tintColor = ChaosRGB(, , );
  23.  
  24. // 设置选中后文字颜色
  25. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  26. dict[NSForegroundColorAttributeName] = [UIColor whiteColor];
  27. [seg setTitleTextAttributes:dict forState:UIControlStateSelected];
  28.  
  29. // 设置背景图片
  30. [seg setBackgroundImage:[UIImage imageNamed:@"CPArenaSegmentBG"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
  31. // 设置选中后的图片
  32. [seg setBackgroundImage:[UIImage imageNamed:@"CPArenaSegmentSelectedBG"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
  33.  
  34. self.navigationItem.titleView = seg;
  35.  
  36. // // 设置导航控制器navBar的背景图片,,这里是有导航VC的子控制器修改了,不符合封装的思想
  37. // UIImage *image = [UIImage imageNamed:@"NLArenaNavBar64"];
  38. // image = [image stretchableImageWithLeftCapWidth:image.size.width * 0.5 topCapHeight:image.size.height * 0.5];
  39. //
  40. // [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
  41.  
  42. }

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

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

  

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

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

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

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

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

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

--图片做动画的方法

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

  1. // 如果有storyboard,需要在这里布局子控件位置,因为storyboard会先调用updateViewConstraints布局storyboard描述的位置,等它描述完,我们在布局下。
  2. // 如果使用storyboard,在viewDidLoad使用frame布局是不准确的。
  3. - (void)viewDidLayoutSubviews
  4. {
  5. [super viewDidLayoutSubviews];
  6.  
  7. CGFloat screenH = [UIScreen mainScreen].bounds.size.height;
  8. CGFloat screenW = [UIScreen mainScreen].bounds.size.width;
  9.  
  10. CGFloat x = ;
  11. CGFloat w = ;
  12. CGFloat h = ;
  13. int cols = ;
  14. NSUInteger count = self.btns.count;
  15. NSUInteger rows = (count - ) / cols + ;
  16. CGFloat margin = (screenH - rows * ) / (rows + );
  17. int col = ;
  18. int row = ;
  19. int i = ;
  20. CGFloat y = ;
  21. for (UIButton *btn in _btns) {
  22. col = i % cols;
  23. row = i / cols;
  24. y = (margin + h) * row + margin;
  25. if (col == ) {
  26. x = ;
  27. }else{
  28. x = screenW - w;
  29. }
  30. btn.frame = CGRectMake(x, y, w, h);
  31.  
  32. i++;
  33. }
  34.  
  35. }

四、我的彩票界面

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

--解决方法,拿到按钮,在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. MyEclipse和Microsoft Visual Studio常用快捷键

    MyEclipse       Visual Studio            NOTEF5            F11                 单步执行 F6            F1 ...

  2. 关于JavaScript中Get/Set访问器

    有时候大家可能会纳闷,在使用JavaScript的时候,只需要给一个系统变量赋值就可以触发一系列操作去相应. 但是我们在写Js的时候,修改了一个自定义变量,却连个P都没有.是不是很郁闷呢? 其实,我们 ...

  3. java多线程学习--java.util.concurrent

    CountDownLatch,api 文档:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.h ...

  4. Android静态图片人脸识别的完整demo(附完整源码)

    Demo功能:利用android自带的人脸识别进行识别,标记出眼睛和人脸位置.点击按键后进行人脸识别,完毕后显示到imageview上. 第一部分:布局文件activity_main.xml < ...

  5. WebDav的java客户端开发包:Jackrabbit

    上一篇帖子“WebDav的java客户端开发包:sardine”中说到,对于开发WebDav客户端 sardine是一个很好的选择,但sardine并未实现WevDav的全部规范,所以我又试了试 ap ...

  6. Python isalnum() 方法

    描述 Python isalnum() 方法检测字符串是否由字母和数字组成. 语法 isalnum()方法语法: S.isalnum() 参数 无. 返回值 如果字符串至少有一个字符并且所有字符都是字 ...

  7. HDU1024 Max Sum Plus Plus 【DP】

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. NRF24L01使用外部中断读取数据的问题

    NRF24L01读取数据不能使用中断的方式,原因如下: 首先NRF24L01中断触发时,IRQ引脚会一直保持低电平直到状态寄存器中的中断标志被重新清零. stm32的外部中断触发方式只有上升沿或者下降 ...

  9. 调用oracle 各种报错总结---待续

    ORA-01747: user.table.column, table.column 或列说明无效 原因之一是sql语句拼接错误,多了逗点:二是使用到了oracle的关键字所致 ORA-02449: ...

  10. django找不到模板(TemplateDoesNotExist at)的异常处理案例

    一.django的渲染模板时报如下错: TemplateDoesNotExist at 二.定位问题: 1.由上面报的错.一开始以为是找不到模板(自己路径写的不对).后来发现我的路径写的是正确的. 2 ...