如何在iOS中的屏幕上移动标签文本?
问题描述:
我在里面有一个标签和文字。我希望我的文本像数字信息板一样跨越标签的宽度。如何在iOS中做到这一点?我试图与该代码(这是我从这里得到:http://www.youtube.com/watch?v=EFoNEjPwTXM),但它不工作:如何在iOS中的屏幕上移动标签文本?
在.m文件:
-(void)time: (NSTimer *) theTimer
{
currentSong.center = CGPointMake(currentSong.center.x - 3.5, currentSong.center.y);
if (currentSong.center.x < - (currentSong.bounds.size.width/2))
{
currentSong.center = CGPointMake (320 + (currentSong.bounds.size.width/2), currentSong.center.y);
}
}
在viewDidLoad
:
timer = [NSTimer timerWithTimeInterval:0.09 target:self selector:@selector(time:) userInfo:nil repeats:YES];
在.h文件:
IBOutlet UILabel *currentSong;
IBOutlet NSTimer *timer;
-(void)time: (NSTimer *) theTimer;
@end
答
试试这可能有助于
-(void)viewDidLoad {
[super viewDidLoad];
[self marqueeMessage:@"test"];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)marqueeMessage:(NSString *)messageString {
UILabel *label = [[UILabel alloc] initWithFrame:(CGRectMake(0, 50, 90, 21))];
//label.tag=nextIndex;
label.text = messageString;
label.backgroundColor=[UIColor clearColor];
[self.view addSubview:label];
[UIView beginAnimations:@"test" context:nil];
[UIView setAnimationDuration:3];
[UIView setAnimationDidStopSelector:@selector(marqueeMessage:)];
[UIView setAnimationDelegate:self];
label.frame = CGRectMake(360,50,90,21);
[UIView commitAnimations];
}
+0
谢谢,但我的想法是只移动文本,而不是整个标签。并且如果可能的话是相反的。我的意思是从右到左。 – scourGINHO 2013-03-14 13:29:53
答
尝试......它可能满足ü[R要求
int x;
float size;
@synthesize label;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
label=[[UILabel alloc]init ];
//WithFrame:CGRectMake(300, 400, 400, 30)];
[email protected]"www.*.com";
size=[self getLabelWidth:label];
label.frame=CGRectMake(300, 400, size, 30);
label.backgroundColor=[UIColor clearColor];
x=300;
[NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(clickme) userInfo:nil repeats:YES];
}
-(void)clickme
{
x--;
label.frame=CGRectMake(x, 400, size, 30);
if(x==-size)
{
x=300;
}
[self.view addSubview:label];
}
-(float)getLabelWidth:(UILabel*)label1
{
CGSize maximumSize = CGSizeMake(500,30);
CGSize StringSize = [label1.text sizeWithFont:label1.font constrainedToSize:maximumSize lineBreakMode:UILineBreakModeTailTruncation];
NSLog(@"width is %f",StringSize.width);
return StringSize.width;
}
答
这是一个黑客攻击的一位。它所做的只是在文本已经在标签之前定期添加空格,以便文本看起来像在移动,而实际上标签不是。下面的代码:
//Interface (.h)
@property (nonatomic, strong) IBOutlet UILabel *label; //Remember to connect this to
//a label in Storyboards
//Implementation (.m)
-(void)moveText {
[self.label setText:[NSString stringWithFormat:@" %@", self.label.text]];
}
- (void)viewDidLoad {
[self.label setText:@"A very long and boring string"];
//You can change the time interval to change the speed of the animation
[NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(moveText) userInfo:nil repeats:YES];
}
答
- (void)sendNotification:(NSString*)txt{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:3.5];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:messageView cache:YES];
[lblTime setText:txt];
[lblTime setTextAlignment:UITextAlignmentLeft];
lblTime.frame = CGRectMake(260, 0, 258, 19);
[UIView commitAnimations];
}
这是被称为“跑马灯”:http://*.com/questions/11255988/continuous-scrolling-of-uilabel-like-marquee – *foe 2013-03-14 13:04:17