iOS 垂直方向跑马灯 循环滚动 多处高亮显示_ios gbloopdirection-程序员宅基地

技术标签: 多处高亮  跑马灯  垂直动画  高亮显示  ios  循环滚动  

由于业务需求,需要实现一个垂直滚动文本的跑马灯,没有办法只有自己去写一个动画效果,下面直接贴出代码。

MTAVerticalLoopView.h文件的代码如下:

 

//
//  UIVerticalLoopView.h
//  Jovi
//
//  Created by yuzhuo on 2016/11/23.
//  Copyright  2016年 dianping.com. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "MTANewAdviseInfo.h"

@protocol VerticalLoopDelegate<NSObject>

- (void)didClickContentAtIndex:(NSInteger)index;

@end
typedef enum
{
    VerticalLoopDirectionBottom,
    VerticalLoopDirectionDown,
    
}VerticalLoopDirection;

@interface MTAVerticalLoopView : UIView
{
    
    // 创建两个label循环滚动
    UILabel *_firstContentLabel;
    UILabel *_secondContentLabel;
    
    UILabel *_firstclickLabel;
    UILabel *_secondclickLabel;
    // 记录
    int currentIndex;
    
}
/** 动画方向默认往上
 *  跑马灯动画时间
 */
@property(nonatomic) float verticalLoopAnimationDuration;
/**
 *  显示的内容(支持多条数据)
 */
@property(nonatomic, retain) NSMutableArray<MTANewAdviseInfo *> *data;
/**
 * loop方向(上下/右)
 */
@property(nonatomic) VerticalLoopDirection Direction;
@property (nonatomic, weak)id<VerticalLoopDelegate> loopDelegate;
/**
 *  开启
 */
-(void)start;

- (void)loopContentClick;

@end

 

 

 

 

 

MTAVerticalLoopView.m文件的代码如下:

 

//
//  UIVerticalLoopView.m
//  Jovi
//
//  Created by yuzhuo on 2016/11/23.
//  Copyright  2016年 dianping.com. All rights reserved.
//

#import "MTAVerticalLoopView.h"

@implementation MTAVerticalLoopView
{
    BOOL _animating;
}

#pragma mark - lifecycle
- (id)initWithFrame:(CGRect)frame
{
    
    self = [super initWithFrame:frame];
    if (self) {
        
        [self setupView];
    }
    return self;
}

#pragma mark - private method
-(void)setupView {
    
    _firstclickLabel = [[UILabel alloc]initWithFrame:CGRectMake(self.frame.size.width-50, 10, 50, 25)];
    _firstclickLabel.font = [UIFont systemFontOfSize:11.0];
    [_firstclickLabel.layer setBorderColor:[UIColor colorWithHexString:@"#ff6633"].CGColor];//边框颜色
    [_firstclickLabel.layer setMasksToBounds:YES];
    [_firstclickLabel.layer setCornerRadius:12.5];
    [_firstclickLabel.layer setBorderWidth:1.0];
    _firstclickLabel.textColor = [UIColor colorWithHexString:@"#ff6633"];
    _firstclickLabel.textAlignment = NSTextAlignmentCenter;
    
    _secondclickLabel = [[UILabel alloc]initWithFrame:CGRectMake(self.frame.size.width-50, self.frame.size.height+10, 50, 25)];
    _secondclickLabel.font = [UIFont systemFontOfSize:11.0];
    [_secondclickLabel.layer setBorderColor:[UIColor colorWithHexString:@"#ff6633"].CGColor];//边框颜色
    [_secondclickLabel.layer setMasksToBounds:YES];
    [_secondclickLabel.l
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhuod/article/details/53302516

智能推荐

将模式对话框的返回值回送(PostBack)到服务端 -程序员宅基地

作者:张老三的专栏 http://blog.csdn.net/billy_zh/ 在一些应用中,希望将模式对话框的值回送(PostBack)到服务端,也就是执行一个服务端操作,从而刷新页面。举个例子:比方说新建一个订单,此时希望能在模式对话框中选择产品,并将产品的ID返回,同时刷新订单中的产品项,解决的方法有多种,这里只介绍执行服务器操作的方法。要将客户端数据回送(PostBack)到服..._dialog让page postback

面试必备- 2022 Vue最新面试题总结(持续更新中)_vue自定义指令面试题_小浣熊喜欢揍臭臭的博客-程序员宅基地

2022年最新面试题整理(包答案)总结最近我和几个同事遇到的面试题,希望对大家有帮助,面试题我分为两类,经常遇到,很少遇到。1、vue的生命周期 2、computed和watch区别?3、深度监听怎么做? 4、父子组件的生命周期的顺序5、setTimeout是在生命周期的什么阶段销毁的?如果不销毁会怎么样?6、父子组件通信用什么? 兄弟组件通信呢?7、路由守卫 8、如何实现双向数据绑定?9、vue的修饰符有哪些?10、vuex中mulation和actions的区别和联系? 11、MVC与MVVM的_vue自定义指令面试题

从相册和相机选择图片以及图片压缩和android7.0相机-程序员宅基地

从相册去图片调用相机拍照图片的压缩布局xml version="1.0" encoding="utf-8"?>="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="matc

Java bug 大全-程序员宅基地

这全都是我遇到过的bug同样的bug信息,可能背后有千万种原因,而我,永远都不知道到底是哪一个。:)努力通过代码积累尽可能多的bug,并将它们进行分类。如果帮你debug节省了时间,就点个赞呗~~bug1:找不到或无法加载主类1. 描述:程序中含有package关键字,使用“终端”运行程序时出现“找不到或无法加载主类”,而使用Eclipse软件可以正常运行程序的可能解决办法。例如程序名为Hello...

codevs 3249 搭积木-程序员宅基地

提交地址:http://codevs.cn/problem/3249/3249 搭积木时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题解题目描述DescriptionPetya有一个A×B×C的长方体积木,积木是有1×1×1...

对视图有时为什么使用select top 100 percent 而不使用 select 呢_abap select top-程序员宅基地

对视图有时为什么使用select top 100 percent 而不使用 select 呢_abap select top

随便推点

深度学习——NLP中词的表示方法&word embedding&word2vec-程序员宅基地

一直有点没明白标题中三者的关系,在此记录下来自己查阅之后的看法,有不对的地方,请大家指正,谢谢!关于NLP中,有各种不同的表达,如:词向量、word embedding、分布式表示、word2vec、glove等等,这一锅粥的名词术语分别代表什么,他们具体的关系是什么,他们是否处于平级关系?希望写完这篇文章后,自己能清楚地理清他们之间的关系。https://blog.csdn.net...

tensorflow........KNN实现(k=1)_knn模型中k=1产生的结果是-程序员宅基地

KNN算法:欲分类的点周围找到K个与之最近的点,统计出K个点中最多出现的类别,就是这个点的类别tensorflow这里是K为1的情况,准确率大约为91%# -*- coding:utf-8 -*-import tensorflow as tfimport numpy as npfrom tensorflow.examples.tutorials.mnist import input_..._knn模型中k=1产生的结果是

AOP原理及实现_aop的原理和实践-程序员宅基地

概述:最近在开发中遇到了一个刚好可以用AOP实现的例子,就顺便研究了AOP的实现原理,把学习到的东西进行一个总结。文章中用到的编程语言为kotlin,需要的可以在IDEA中直接转为java。 这篇文章将会按照如下目录展开:AOP简介代码中实现举例AOP实现原理部分源码解析AOP简介相信大家或多或少的了解过AOP,都知道它是面向切面编程,在网上搜索可以找到很多的解释。这里我用一句话来总结:AOP是能够让我们在不影响原有功能的前提下,为软件横向扩展功能。 那么横向扩展怎么理解呢,我们在WEB项目_aop的原理和实践

获取URL的指定参数对应值-程序员宅基地

+ (NSString *) paramValueOfUrl:(NSString *) url withParam:(NSString *) param{ NSError *error; NSString *regTags=[[NSString alloc] initWithFormat:@"(^|&|\\?)+%@=+([^&]*)(&|$)",param]; NSRegul

OpenGL 画荷花_opengl实现一个三维荷花-程序员宅基地

本文参考 基于OpenGL的荷花开放过程模拟_刘金定 (这是百度文库的链接,读者可自己搜索)我们在这里会实现简单的OpenGL画莲花过程,并实现简单的莲花绽放过程,对学习OpenGL和3D数学有着极大的帮助.一 画荷花花瓣荷花是由一片一片的花瓣组成的_opengl实现一个三维荷花

计算机二级等级考试模拟试题,2016年计算机二级考试office模拟试题_湯姆漢克的博客-程序员宅基地

2016年计算机二级考试office模拟试题1[单选题] 微型计算机完成一个基本运算或判断的前提是中央处理器执行一条(  )。A.命令B.指令C.程序D.语句【参考答案】:B【参考解析】:微型计算机完成一个基本运算或判断的前提是中央处理器执行一条指令。2[单选题] 下列数据结构中,能够按照“先进后出”原则存取数据的是(  ).A.循环队列B.栈C.队列D.二叉树【参考答案】:B【参考解析】:栈是按...