【问题标题】:Animate Vertical Scrolling Text动画垂直滚动文本
【发布时间】:2025-12-17 14:40:01
【问题描述】:

我正在应用中实现 About 视图控制器,当点击按钮时显示模式。

在视图控制器上,我有一个 UILabel 和一些文本显示在那里。我想为文本设置动画,使其自动淡入或向上滚动显示制作该应用的团队成员的姓名 - 就像电影结尾处滚动的演职员表一样。

是否有人对 UILabel 中的文本进行了类似的滚动操作?

【问题讨论】:

    标签: ios xcode uiviewcontroller uilabel


    【解决方案1】:

    UIScrollView 应该可以解决问题。使其无限循环的一种非常快速的方法是在顶部和底部设置一个与滚动视图大小相同的空白区域。 (还有其他解决方案,like this,或 WWDC 代码(搜索“street scroller”here...但这些对于“关于”视图可能有点多)。

    但是在内容的每一端都有一个空白,你可以像这样循环:

    - (void)loopCredits {
    
        CGRect frame = self.creditsScrollView.frame;
        CGPoint bottomOffset = CGPointMake(0, self.creditsScrollView.contentSize.height-frame.size.height);
    
        [UIView animateWithDuration:10.0 animations:^{
            self.creditsScrollView.contentOffset = bottomOffset;
        } completion:^(BOOL finished) {
            // non animated scroll back, then run this method again with a perform
            // so we don't wind up the stack
            self.creditsScrollView.contentOffset = CGPointZero;
            [self performSelector:@selector(loopCredits) withObject:nil afterDelay:0];
        }];
    

    可以使用遮罩图像轻松完成淡入淡出,或者为了获得更逼真的外观,您可以根据标签的位置相对于滚动视图边界内标签的 Y 偏移量计算 alpha 级别。

    【讨论】:

    • 如何将 .rtf 或 .txt 文件中的文本添加到 UIScrollView?
    • 将其读入字符串,然后将读取的字符串设置为 UILabel .text 或 UITextView.text(使用 .editable=NO)。您的问题说您有一个带有文本的标签(大概是文件中的关于文本)。将该标签放在滚动视图中。