使用UILabel实现滚动字幕移动效果

这个链接中的代码也实现了这种效果

https://github.com/cbpowell/MarqueeLabel

最终效果如下:

原理如下:

1. 获取文本

2. 计算文本宽度

3. 将这个Label放入ScrollView中

4. 将ScrollView的contentSize的宽度设置与文本宽度一致

5. 做动画

*6. 边缘的渐隐效果请使用带透明像素的PNG图片

//
//  RootViewController.m
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"
#import "YXKit.h"
#import "FontPool.h"

@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];

    // 注册字体
    REGISTER_FONT(bundleFont(@"新蒂小丸子体.ttf"), @"新蒂小丸子体");

    // 获取文本
    NSString *string = @"  喜欢这首情思幽幽的曲子,仿佛多么遥远,在感叹着前世的情缘,又是那么柔软,在祈愿着来世的缠绵。《莲的心事》,你似琉璃一样的晶莹,柔柔地拨动我多情的心弦。我,莲的心事,有谁知?我,莲的矜持,又有谁懂?  ";

    // 初始化label
    UILabel *label      = [UILabel new];
    label.text          = string;
    label.numberOfLines = 0;
    label.textColor     = [UIColor cyanColor];
    label.font          = [UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子体", 0)
                                          size:20.f];

    // 计算尺寸
    CGSize size         = [label boundingRectWithSize:CGSizeMake(0, 0)];
    label.frame         = (CGRect){CGPointZero, size};

    // 初始化ScrollView
    UIScrollView *showView =         [[UIScrollView alloc] initWithFrame:CGRectMake(0, 90, 320, size.height)];
    showView.contentSize   = size;
    showView.showsHorizontalScrollIndicator = NO;
    [showView addSubview:label];
    [self.view addSubview:showView];

    // 形成边缘的遮罩
    UIImageView *imageView =     [[UIImageView alloc] initWithFrame:CGRectMake(0, 90, 320, size.height)];
    imageView.image = [UIImage imageNamed:@"bg"];
    [self.view addSubview:imageView];

    // 动画
    [UIView animateKeyframesWithDuration:10
                                   delay:7
                                 options:UIViewKeyframeAnimationOptionAllowUserInteraction
                              animations:^{
                                  // 计算移动的距离
                                  CGPoint point = showView.contentOffset;
                                  point.x = size.width - 320.f;
                                  showView.contentOffset = point;
                              }
                              completion:^(BOOL finished) {

                              }];
}

@end

使用UILabel实现滚动字幕移动效果,布布扣,bubuko.com

时间: 2024-08-11 18:08:03

使用UILabel实现滚动字幕移动效果的相关文章

Android之如何用TextView实现滚动字幕的效果【跑马灯】

TextView 实现滚动字幕效果[跑马灯效果]: android:ellipsize="marquee"//可滚动,star(头部),middle(中部),end(尾部) 超出显示不下的内容用...代替, 实现条件 1.必须设置为单行显示,且TextView中的内容超过它的容纳范围, 2.TextView本身没有焦点,必须设置成可获取焦点 <TextView android:layout_width="100dp" android:layout_height

js原生 + jQuery实现页面滚动字幕

js原生/jQuery实现页面滚动字幕效果 17:45:49 在新闻列表或者文章列表信息等页面中很容易要求实现字幕滚动的效果,以下为简单的实现页面中滚动字幕的效果 1.jQuery实现页面滚动字幕效果 代码如下: <div class="box"> <ul class="list"> <li>这是滚动加载的第1条数据</li> <li>你猜猜这是第几条滚动加载的文字</li> <li>

cocos2d-x利用CCClippingNode实现滚动字幕

这周单位要做一个人脸美化的项目,查资料遇到这位大牛的博客,地址如下:点击打开链接 我的代码也是在他的基础上进行修改的,但是他对图像的RGB三个通道平等调节,为了适应我的需求,我改成了针对三个通道分别调节.废话不多说,开始上源码 void ImageAdjust(Mat& src, Mat& dst, vector<double> low_in, vector<double> high_in, vector<double> low_out, vector&

02 HTML 列表 块行元素 滚动字幕 文本图片锚点超链接 相对绝对URL 图片标记

定义列表 <div>和<span> 块元素和行内元素 网页颜色表示 滚动字幕标记 计算机进制 计算机编码介绍 超级链接 超级链接的标记<a></a>,双边标记,是行内元素 URL介绍 绝对URL和相对URL地址 相对URL地址:一般是用于链接本网站中的各个文件的路径. 其它常用的链接 锚点链接:实现在一个网页的不同部分进行跳转 图片标记 定义列表 定义列表的格式: <dl>        <dt>定义标题</dt>    

C#-循环滚动字幕,timer,从左至右,从右至左,暂停---ShinePans

Lable的Left属性是可以更改的,但是 Right属性不可以更改,所以我们可以利用 这个特点做自加 自减运算 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using S

让视频编辑软件中的滚动字幕停下来的方法

我们在看电视电影等等影片时,总会看到结尾的字幕都是从下往上滚动,有的滚动到中间会停留一段时间,有的则是直接滚上去消失不见.那么在EDIUS中,如何做出滚动字幕停下来再滚走的效果呢?下面,小编给大家讲讲EDIUS滚动字幕的那些事. EDIUS滚动字幕停下来的方法如下: 1.单击时间线面板上的创建字幕按钮,在字幕轨T轨上输入文字上,字幕类型保持静止,然后单击保存: 2.在特效面板里,单击“字幕混合”前的小加号,显示全部的字幕特效: 3.根据需求选择拖入特效“飞入A”或“飞入B”到字幕上:“飞入A”是

Qt(QLabel)实现滚动字幕

滚动字幕,也叫跑马,就是动态显示一行字符.前面实现是使用QTimer控制,直接在槽函数中截取字符串进行显示,只控制字符串在控件的一端显示,超出控件的部分并没有从控件的另一端循环显示出来.于是我重新实现了一种方法,或者说完善了前面的不足吧. 使用QTimer控制显示的节奏,在paintEvent中进行截取显示.从左端被截掉的部分会从右端显示出来. 难点在于,我们需要依据控件的宽度,控制字符串的显示位置.所以我们还需要知道每个字符的宽度.QWidget提供了方法可以计算字符的宽度,QFontMetr

跑马灯(滚动字幕)

网页上经常看到滚动字幕,比如下图 之前都是使用js实现的,今天发现这个有html标签即可实现此功能,代码如下: <marquee width=70% scrollamount="3">            <strong><font color="red">仅供失败处理时使用,在使用该功能时确保后台线程并没有执行相同的任务!</font></strong> </marquee> 使用marqu

滚动字幕特效大全代码 (转)

滚动字幕特效大全代码 把代码中的文字改为你的文字就可以了. 1.阴影滚动字 循环滚动: 欢迎来到农夫空间 代码: <marquee scrollamount=3 FONT style="COLOR=FF0000; FILTER: shadow(color=FFFF33 ); FONT-FAMILY: 隶书; FONT-SIZE: 25pt; WIDTH: 100%">欢迎来到混吧人空间</marquee> 来回移动: 欢迎来到农夫空间 代码: <marqu