java演出厅选票_高仿猫眼电影选座(选票)模块-b

上图看效果先:

3755cc15357327f743c8b4d6596af800.gif

7b398e92618e325385907db933c7526f.gif

55c421f53f3c64432c03719a6ac7d8fb.gif

ecb669c831089ba00a6c8df08b1eb59f.gif

1)画座位图其实不是很难一般数据都会给坐标,将坐标对应座位画出来就可以了,主要是开场动画要设置默认大小,还有座位图的数量也不是固定的,所以在初始化座位图的时侯就默认算出了整个座位图的大小

-(instancetype)initWithSeatsArray:(NSMutableArray *)seatsArray maxNomarWidth:(CGFloat)maxW seatBtnActionBlock:(void (^)(id))actionBlock{

if (self = [super init]) {

self.actionBlock = actionBlock;

ZFSeatsModel *seatsModel = seatsArray.firstObject;

NSUInteger cloCount = [seatsModel.columns count];

if (cloCount % 2) cloCount += 1;//偶数列数加1 防止中线压住座位

CGFloat seatViewW = maxW - 2 * ZFseastsRowMargin;

CGFloat seatBtnW = seatViewW / cloCount;

if (seatBtnW > ZFseastMinW_H) {

seatBtnW = ZFseastMinW_H;

seatViewW = cloCount * ZFseastMinW_H;

}

//初始化就回调算出按钮和自身的宽高

CGFloat seatBtnH = seatBtnW;

self.seatBtnWidth = seatBtnW;

self.seatBtnHeight = seatBtnH;

self.seatViewWidth = seatViewW;

self.seatViewHeight = [seatsArray count] * seatBtnH;

//初始化座位

[self initSeatBtns:seatsArray];

}

return self;

}

2)画侧边的索引条 主要就是算出总共有多少列,有没走到之类的 将座位列号根据每个竖向坐标直接画进索引条就可以了

//画索引条

- (void)drawRect:(CGRect)rect {

NSDictionary *attributeName = @{NSFontAttributeName: [UIFont systemFontOfSize:10],NSForegroundColorAttributeName : [UIColor whiteColor]};

CGFloat NuomberTitleH = (self.height - 2 * 10) / self.indexsArray.count;

[self.indexsArray enumerateObjectsUsingBlock:^(ZFSeatsModel *seatsModel, NSUInteger idx, BOOL *stop) {

CGSize strsize =  [seatsModel.rowId sizeWithAttributes:attributeName];

[seatsModel.rowId drawAtPoint:CGPointMake(self.width * 0.5 - strsize.width  * 0.5,10 + idx * NuomberTitleH + NuomberTitleH  * 0.5 - strsize.height  * 0.5) withAttributes:attributeName];

}];

}

3)中线启示也是自定义一个view画一条线线上是label,每次随座位图上下滚动,重新设置自身高度重绘该线条就能达到效果

-(void)setHeight:(CGFloat)height{

[super setHeight:height];

[self setNeedsDisplay];

}

- (void)drawRect:(CGRect)rect {

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetLineWidth(context, 1.0);

CGContextSetStrokeColorWithColor(context, [UIColor darkGrayColor].CGColor);

CGFloat lengths[] = {6,3};

CGContextSetLineDash(context, 0, lengths,2);

CGContextMoveToPoint(context, 0, 0);

CGContextAddLineToPoint(context, 0, self.bounds.size.height);

CGContextStrokePath(context);

}

4)每次座位图滚动的时候随着偏移量的变化更新其他所有控件的坐标就能达到某一方向跟随scrollview滚动方向移动

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

// 更新applogo

if (scrollView.contentOffset.y <= scrollView.contentSize.height - self.height +ZFseastsColMargin + 15) {

self.maoyanLogo.y = CGRectGetMaxY(self.seatView.frame) + 35;

self.maoyanLogo.centerX = self.seatView.centerX;

}else{

self.maoyanLogo.centerX = self.seatView.centerX;

self.maoyanLogo.y = scrollView.contentOffset.y + self.height - self.maoyanLogo.height;

}

//更新hallLogo

self.hallLogo.y = scrollView.contentOffset.y;

//更新中线

self.centerLine.height = CGRectGetMaxY(self.seatView.frame) + 2 * ZFSmallMargin;

if (scrollView.contentOffset.y < - ZFseastsColMargin ) {

self.centerLine.y = self.seatView.y - ZFseastsColMargin + ZFCenterLineY;

}else{

self.centerLine.y = scrollView.contentOffset.y + ZFCenterLineY;

self.centerLine.height = CGRectGetMaxY(self.seatView.frame) - scrollView.contentOffset.y - 2 * ZFCenterLineY + ZFseastsColMargin;

}

// 更新索引条

self.rowindexView.x = scrollView.contentOffset.x + ZFseastMinW_H;

//更新indicator大小位置

[self.indicator updateMiniIndicator];

if (!self.indicator.hidden || self.seatScrollView.isZoomBouncing)return;

self.indicator.alpha = 1;

self.indicator.hidden = NO;

}

最后不多解释啦上Github地址:https://github.com/ZFbaby/ZFSeatsSelection/blob/master/ZFSeatsSelection

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

input发送a.jax_Java EE 7 / JAX-RS 2.0 – REST上的CORS

input发送a.jaxJava EE REST应用程序在开箱即用的开发机器上通常可以很好地运行&#xff0c;在该机器上&#xff0c;所有服务器端资源和客户端UI都指向“ localhost”或127.0.0.1。 但是&#xff0c;当涉及跨域部署时&#xff08;当REST客户端不再与托管REST API的服务器位于同…

用C/C++开发《Photoshop》图像处理软件

今晚课题【长按识别图中二维码】

javaone_代理的JavaOne 2014观察

javaone我今年无法参加JavaOne&#xff0c;但很高兴看到一些在线资源涵盖了JavaOne 2014的活动。在本文中&#xff0c;我总结了JavaOne 2014的一些观察结果&#xff0c;并提供了指向提供这些观察结果的参考的链接。提供有关这些观察的更多背景细节。 列出的观察结果没有特别的顺…

java怎么兼容switch_java – Switch语句给出了不兼容类型错误

我正在尝试编译,我收到此错误&#xff1a;enigma/Rotor.java:30: incompatible types found : java.lang.String required: int switch(name){1 error为什么我收到此错误&#xff1f;我如何解决它&#xff1f;它在包中,我似乎无法弄明白.这是代码&#xff1a;String label;Roto…

基于java的心理健康_基于SSM的JAVA心理健康网

今天记录的项目是心理健康网的规划与设计&#xff0c;这个项目是这么回事&#xff1a;心理健康是关系到人才质量的重要问题。随着网络时代的发展,传统的大学生心理健康教育教学方式和课程资源远不能解决当代大学生的心理问题。本文通过对学生心理健康网的规划与设计进行研究。首…

C/C++打造《百万级人脸识别系统》

今晚课题【长按识别图中二维码】

rhq监控软件_RHQ指标的WildFly子系统

rhq监控软件对于RHQ-Metrics&#xff0c;我已经开始为WildFly 8编写一个子系统&#xff0c;该子系统能够在WildFly内收集度量&#xff0c;然后以固定的时间间隔&#xff08;当前为每分钟&#xff09;将其发送到RHQ-Metrics服务器。 下一张图是该发件人连续运行1.5天时结果的可…

java中content啥意思_JSTL标签中的body-content标签体内容输出格式的介绍

我们在JSTL标签中看到“JSP”这种类型的定义&#xff0c;但是不知道它是什么意思&#xff0c;其实它的意思就是定义了一个JSTL标签内部是否允许使用JSP表达式&#xff0c;先来了解什么是JSTL标签体&#xff0c;请看代码&#xff1a;//中间即为JSTL标签体再来看看什么是jsp表达式…

打造最强加密工具之《绝密信息传递》

今晚课题【长按识别图中二维码】

jooq sql_用jOOQ用Java编写SQL

jooq sqljOOQ是“数据库优先”类型的安全SQL API&#xff0c;使您可以直观地用Java编写SQL&#xff0c;就像Java编译器本身支持SQL语言一样。 所有数据库模式&#xff0c;表&#xff0c;列&#xff0c;过程和其他对象均作为Java对象提供&#xff0c;可以直接在jOOQ SQL API中使…

C/C++打造经典推箱子小游戏

今晚课题【长按识别图中二维码】

php mysql crud demo_基于php和mysql的简单的dao类实现crud操作功能_PHP教程

代码如下:public function SimpleDao() {if ($this->_con null) {$this->_con mysql_connect("localhost", "root", "123456");if ($this->_con FALSE) {echo("connect to db server failed.");$this->_con null;retu…

di容器_DI容器是代码污染者

di容器尽管依赖项注入 &#xff08;aka&#xff0c;“ DI”&#xff09;是一种在OOP中组成对象的自然技术&#xff08;在Martin Fowler引入该术语之前就已知道&#xff09;&#xff0c;但Spring IoC &#xff0c; Google Guice &#xff0c; Java EE6 CDI &#xff0c; Dagger和…

C/C++高级算法之绘制曼德布洛特集

今晚课题【长按识别图中二维码】

python mysql 连接6_寒假学习进度-6(Python连接MySQL数据库)

Python连接mysql和操作软件&#xff1a;pycharm开始在pycharm下面的Terminal中安装mysql时提醒pip版本不够&#xff0c;所以需要先升级一下pippython -m pip install --upgrade pip升级完pip之后就可以下载mysqlpip install mysql下载完成后在setting中查看进行代码测试#!/usr/…

intellij 快捷键_IntelliJ中的键盘快捷键

intellij 快捷键我上周参加了Hadi Hariri在JavaOne上的演讲。 他介绍了很多我不知道的IntelliJ键盘快捷键。 非常有用的谈话。 我在下面列出了一些最有用的。 Cmd-1&#xff1a;将焦点移到“项目”窗口 在此输入任何类名&#xff08;包括使用Camel Case&#xff0c;例如HW来查…

C/C++中*和的用法详解

C中&和*的用法一直是非常让人头疼的难点&#xff0c;课本博客上讲这些知识点一般都是分开讲其用法的&#xff0c;没有详细的总结&#xff0c;导致我在这方面的知识结构格外混乱&#xff0c;在网上找到了一篇英文文章简单总结了这两个符号的一些用法&#xff0c;都是一些比较…

java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...

java基础(2)--运算符详解自增自减规则自增自减就是常用的 a a 或者 a a;前者是后缀式&#xff0c;先把a赋值给a,再加一&#xff1b;后者是后缀式&#xff0c;先加一&#xff0c;在赋值给a;而且a,a并不是原子操作&#xff0c;在当线程环境下并不会出错&#xff0c;当放在多线程…

jsf 单元测试_构建和测试JSF.next

jsf 单元测试JSF 2.3专家组正在努力确定哪些功能将成为即将发布的版本的一部分。 JSF团队一直在努力改善CDI的一致性。 JSF 2.3代码库中已经有许多新功能可以开始测试。 我将尝试使本文保持最新状态&#xff0c;并添加最新功能。 有关最新参考&#xff0c;请参阅Manfred的博客。…