如何以编程方式在 iPhone 应用程序中从左到右移动文本? [关闭]
Posted
技术标签:
【中文标题】如何以编程方式在 iPhone 应用程序中从左到右移动文本? [关闭]【英文标题】:How to move texts from left to right in iPhone app programmatically? [closed] 【发布时间】:2013-01-08 12:10:11 【问题描述】:我正在使用 iPhone 应用程序。我想在我的应用程序中显示一些来自 web 服务的文本/警报,例如移动文本(从左到右滚动动画)。我不知道该怎么做?
来自 web 服务的警报消息的长度各不相同,警报消息的数量也各不相同。我想在带有动画的 UIViewController 顶部的滚动中一一显示。可以在 iPhone 应用程序中进行吗?如果可能意味着有人请帮我这样做吗?我没有任何想法。请帮助我。期待您的帮助。提前致谢。
编辑:我试过 ***.com/questions/1369314/how-to-add-moving-text-in-iphone。它适用于自下而上的动画文本。我想显示左右。我试图更改代码,但我无法解决这个问题。请帮我。谢谢
【问题讨论】:
如果您想在应用中显示字幕,我建议您使用 UIWebView。 就像 html 中的选框一样。还有一件事是高度是固定的,宽度是可变的,还是两者都是可变的? @Leena 正在接收字符串格式的警报消息。有时它返回 5-10,有时它返回 10 以上。警报消息的长度不同。以及如何在 UIWebView 中显示 NSString(字符串)?谢谢。 @0x7fffffff 我已经尝试过这个 ***.com/questions/1369314/how-to-add-a-moving-text-in-iphone。它正在为向下工作。但我已经从左到右更改了代码。但我能做到。 【参考方案1】:试试这个:
将标签设置在默认位置,X=0 和 Width = 320 Y 和高度根据您的需要
在你想要执行动画的地方写下这段代码
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:5];
lbl.frame = CGRectMake(320, lbl.frame.origin.y, lbl.frame.size.width, lbl.frame.size.height);
[UIView commitAnimations];
注意: 此代码用于从左到右更改 CGRectMake 参数,使其从右到左。
编辑:(在第一条评论之后)
将此动画代码放入每 5 或 6 秒运行一次的 NSTimer 方法中,并在该方法中 该方法看起来像这样:
更改标签文本 设置默认位置 动画代码祝你好运
【讨论】:
非常感谢您的帮助。我还需要你的帮助。我收到了来自 Webservice 的 5-10 条警报消息。我必须一一滚动所有消息。您的代码适用于单个消息。如何一一显示所有消息?任何的想法。而且我还有一个按钮可以前进和后退来查看消息。请帮助我做到这一点。我对这个动画很困惑。谢谢。 感谢您的帮助。我已经做到了。【参考方案2】:试试下面的代码
int i = 0;
float width = 0.0;
float origin_x = 0.0;
for (NSString *s in arrList)
CGSize size;
NSRange r;
size = [s sizeWithFont:[UIFont fontWithName:@"*****" size:14.0] constrainedToSize:CGSizeMake(10000.0, 35.0) lineBreakMode:UILineBreakModeWordWrap];
width = (size.width + 12.0 + 10.0);
UIView *viewTopStory = [[[UIView alloc] initWithFrame:CGRectMake(origin_x, 0.0, width, 35.0)] autorelease];
viewTopStory.backgroundColor = [UIColor clearColor];
UIImageView *imgStar = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"star.png"] ] autorelease];
imgStar.frame = CGRectMake(5, 8.0, 12, 12);
[viewTopStory addSubview:imgStar];
UILabel *lblTopstory = [[[UILabel alloc] initWithFrame:CGRectMake(22.0, 2.75, size.width, 30.0)] autorelease];
lblTopstory.font = [UIFont fontWithName:@"*****" size:14.0];
lblTopstory.backgroundColor = [UIColor clearColor];
lblTopstory.text = s;
[viewTopStory addSubview:lblTopstory];
[_viewTopStory addSubview:viewTopStory];
CGRect frame = _viewTopStory.frame;
frame.size.width += width;
_viewTopStory.frame = frame;
origin_x += width;
i++;
CAKeyframeAnimation *animation = [CAKeyframeAnimation
animationWithKeyPath:@"transform"];
//NSMutableArray *marrframeValues = [[[NSMutableArray alloc]init] autorelease];
CATransform3D Translation0 = CATransform3DMakeTranslation(0.0, 0.0, 0.0);
CATransform3D Translation4 = CATransform3DMakeTranslation(_viewTopStory.frame.size.width, 0.0, 0.0);
NSArray *frameValues = [NSArray arrayWithObjects:[NSValue valueWithCATransform3D:Translation0], [NSValue valueWithCATransform3D:Translation4],
nil];
[animation setValues:frameValues];
NSArray *frameTimes = [NSArray arrayWithObjects: [NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:1.0], nil];
[animation setKeyTimes:frameTimes];
animation.fillMode = kCAFillModeBackwards;
//animation.autoreverses = YES;
animation.repeatCount = 10000;
animation.removedOnCompletion = NO;
animation.duration = 200.0;
[_viewTopStory.layer addAnimation:animation forKey:@"popup"];
我已经放置了带有初始固定框架的 _viewTopStory,然后我根据文本修改了框架。
希望对你有所帮助。
【讨论】:
非常感谢您的回答。我已经尝试过您的代码,但它与 UILabel 中的多条消息重叠。请你帮助我好吗?正在处理您的代码。谢谢。 您必须根据您的要求设置框架。我已经根据自己的要求设置了框架。 嗨,我已经完成了这个功能。感谢您的大力帮助。再次感谢。以上是关于如何以编程方式在 iPhone 应用程序中从左到右移动文本? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章