سؤال

سأنتهي بمجموعة من خلاصات RSS ، وأرغب في الحصول على ملصق أو البعض لعرضها في أسفل العرض. أود تحريك من خلال كل تغذية في الصفيف.

هذا هو ما لدي حتى الآن تحريكه ، والذي يعمل مع التلاشي ، ولكن فقط يتحرك للبند الأخير من المصفوفة.

feed = [[UILabel alloc] initWithFrame:CGRectMake(0,380,320,43)];
[self.view addSubview:feed];

feed.alpha=1;

NSArray *feeds = [NSArray arrayWithObjects:[NSString stringWithFormat:@"1234567"],[NSString stringWithFormat:@"qwerty"],[NSString stringWithFormat:@"asdfgh"],nil];

for (NSString* f in feeds){

    feed.text=f;

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationDuration:2.0f];
    feed.alpha=0;
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    [UIView commitAnimations];

}

أنا متأكد من أنها بسيطة.

شكرًا

هل كانت مفيدة؟

المحلول

أولاً ، يجب أن تفكر حقًا في اتفاقية تسمية أفضل. استدعاء uilabel تغذية ليس مفيدًا جدًا للمستقبل عندما يتعين عليك العودة والنظر إلى الكود الخاص بك. أود تسميته Feedlabel. ثم عندما تتكرر من خلال قائمة الخلاصات ، يمكنك فقط for (NSString *feed in feeds) وسوف يكون أكثر منطقية. وهكذا سوف feedLabel.text = feed;.

على أي حال ، فإن المشكلة التي أراها مع الكود الخاص بك هي أن لديك مرارًا وتكرارًا ضبط ألفا على الصفر في حلقتك ، لكنك لم تعيدها أبدًا إلى واحدة. بمعنى آخر ، أنت لا تقوم بتغيير في قيمة ألفا. يبقى كما هو في كل تكرار.

لذلك ربما يمكنك توضيح ما تحاول القيام به. إذا كنت ترغب في تلاشي النص بين التغييرات في النص ، فستحتاج إلى الرسوم المتحركة والمنهجية المختلفة. بدلاً من حلقة ، قم بسلسلة الرسوم المتحركة الخاصة بك بحيث عندما تقوم بتعيين النص وبدء التشغيل التالي. شيء مثل:

- (void)performAnimation;
{
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
  [UIView setAnimationDuration:2.0f];
  feed.alpha=0;
  [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)];
  [UIView commitAnimations];
}

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
  feed.alpha = 1.0;
  NSString *nextFeed = [self getNextFeed]; // Need to implement getNextFeed
  if (nextFeed)
  {
    // Only continue if there is a next feed.
    [feed setText:nextFeed];
    [self performAnimation];
  }
}

نصائح أخرى

جربت الكود الخاص بك ، يتلاشى في الخلاصة الأولى ، لكنه لا يدخل حدث الرسوم المتحركة. لهذا السبب لا يمكن استدعاء performanimation مرة أخرى. هل هناك أي مجموعة للرسوم المتحركة (مندوب أو بروتوكول وما إلى ذلك)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top