Не знаком ни с одним приложением (да, с игровым Ludite), но если вы сделаете вид шире экрана, вы можете переместить его местоположение / центр / рамку / преобразование / и т.д. чтобы заставить его двигаться, вы также можете оживить это действие.
если вы сделаете первые 320 точек (мы измеряем в точках, а не в пикселях) ширины вида равными последним 320 точкам, вы можете изменить положение вида, когда оно достигнет конца, и продолжать движение навсегда.
Редактировать (пример кода):
- (void)animateBannerLocation {
UIView *view = _bannerView; // _bannerView.frame = CGRectMake(0,0,1000 ish,40);
CGRect startRect = view.frame;
CGRect destinationRect = view.frame;
// assuming superview is width of screen
destinationRect.origin.x = CGRectGetWidth(view.frame) - CGRectGetWidth(view.superview.frame);
[UIView animateWithDuration:6.0 // time in seconds
animations:^(void) {
view.frame = destinationRect;
} completion:^(BOOL finished) {
/** if you want it to scroll forever:
view.frame = startRect;
[self animateBannerLocation];
**/
}];
}
непроверенных
Редактировать # 2
также не проверено
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *_bannerView; /// - an ivar
// not the best way to load an image you only use in one place:
UIImage *image = [UIImage imageNamed:@"SomeBigBannerImage1000x40ish.png"];
_bannerView = [[UIImageView alloc] initWithImage:image];
[self.view addSubview:_bannerView];
}
Редактировать # 3
Пересмотрел ваш код. Обратите внимание на предупреждения компилятора.
- (void)animateBannerLocation {
UIView *view = _bannerView; // _bannerView.frame = CGRectMake(0,0,1000 ish,40);
CGRect startRect = view.frame;
CGRect destinationRect = view.frame;
// assuming superview is width of screen
destinationRect.origin.x = - (CGRectGetWidth(view.frame) - CGRectGetWidth(view.superview.frame));
[UIView animateWithDuration:6.0
delay:0.0
options:UIViewAnimationOptionCurveLinear
animations:^(void) {
view.frame = destinationRect;
} completion:^(BOOL finished) {
view.frame = startRect;
if (stopAnimation == NO)
[self animateBannerLocation];
}];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self animateBannerLocation];
}