我寫使用動畫文本可可控制的應用程序,的NSTimer scheduledTimerWithTimeInterval和CoreAnimation
https://www.cocoacontrols.com/controls/marqueelabel
它採用CoreText
和QuartzCore
。
這是一個很好的控制,但我有麻煩。 當實例化我使用控件創建的動畫標籤立即開始滾動,但是我發現當我使用NSTimer
創建動畫標籤時,它不是動畫。 我使用
- (void)viewDidLoad
{
[super viewDidLoad];
....
[self.view addSubview:continuousLabel1];
[NSTimer scheduledTimerWithTimeInterval:5
target:self
selector:@selector(updatePrice)
userInfo:nil repeats:YES];
}
但調用創建動畫標籤的方法,當我調用該方法直接在標籤製作和動畫,使用上述計劃的計時器調用時,只有創造了新的標籤動畫第一調用,而不是定時器重複調用該方法。 我檢查了我的方法正在調用主線程/主runloop,任何想法?
爲了清楚的工作流程是:
定時器調用方法 - >標籤1被創建並開始動畫。
5秒晚...
定時器再次調用方法 - >標籤2創建但是就是沒有開始動畫預期。
編輯:
- (void)updatePrice
{
MarqueeLabel *continuousLabel2 = [[MarqueeLabel alloc] initWithFrame:CGRectMake(10, 230, self.view.frame.size.width-20, 20) rate:100.0f andFadeLength:10.0f];
continuousLabel2.tag = 101;
continuousLabel2.marqueeType = MLContinuous;
continuousLabel2.animationCurve = UIViewAnimationOptionCurveLinear;
continuousLabel2.continuousMarqueeExtraBuffer = 50.0f;
continuousLabel2.numberOfLines = 1;
continuousLabel2.opaque = NO;
continuousLabel2.enabled = YES;
continuousLabel2.shadowOffset = CGSizeMake(0.0, -1.0);
continuousLabel2.textAlignment = NSTextAlignmentLeft;
continuousLabel2.textColor = [UIColor colorWithRed:0.234 green:0.234 blue:0.234 alpha:1.000];
continuousLabel2.backgroundColor = [UIColor clearColor];
continuousLabel2.font = [UIFont fontWithName:@"Helvetica-Bold" size:17.000];
continuousLabel2.text = @"This is another long label that doesn't scroll continuously with a custom space between labels! You can also tap it to pause and unpause it!";
[self.view addSubview:continuousLabel2];
if([NSThread isMainThread])
{
NSLog(@"In Main Thread");
}
if ([NSRunLoop currentRunLoop] == [NSRunLoop mainRunLoop]) {
NSLog(@"In Main Loop");
}
}
昨天我只給出了答案[marquee](http://stackoverflow.com/questions/16860254/how-to-make-marquee-uilabel-uitextfield-nstextfield/16860529#16860529) –
你甚至讀過題?我確切知道如何創建一個選框,我的問題不是重複的,甚至與您所建議的相似。當標籤由NSTimers重複調用實例化時,標籤上的動畫不會發生。 – Woodstock
因爲你的問題沒有在代碼中顯示,我認爲答案會對你有所幫助。我看到的一個區別是有一個屬性啓動並使計時器失效。在你的情況下,我不知道你在哪裏和多少次調用myMethod ....鏈接和欺騙可以達到你想要的80-100%。 –