Расширяя вид на левую сторону, анимированные - PullRequest
2 голосов
/ 15 июня 2010

У меня есть вид, который я хочу расширить на левой стороне, используя анимацию.Все границы, кроме левой, должны оставаться неизменными, поэтому позиция x и ширина представления меняются.

Я использую этот код:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:5.0];
self.frame = CGRectMake(self.frame.origin.x-100,
                        self.frame.origin.y,
                        self.frame.size.width+100,
                        self.frame.size.height);
[UIView commitAnimations];

Если я запускаю этот код,ширина вида сразу устанавливается на новое значение, а затем вид перемещается в новую точку x, но почему?Как я могу изменить это поведение?

Спасибо за ваши идеи!

Ответы [ 2 ]

0 голосов
/ 17 июня 2010

Хорошо, я сделал это сейчас. Проблема состояла в том, что мой взгляд был UIButton, и я установил заголовок и фон с setBackground:forState: и setTitle:forState:. Кажется, что фон вид не анимируется. Я использую обходной способ, которым я добавляю свой собственный фон с UIImageView.

Спасибо за ваши ответы!

0 голосов
/ 15 июня 2010

Ваш код работает нормально для меня. Как ты это делаешь? Вызов -setFrame является правильным выбором для того, что вы делаете. Вот как выглядит мой пользовательский вид:

#import "TestView.h"

@implementation TestView

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {
        // Initialization code
    }
    return self;
}

- (void)dealloc {
    [super dealloc];
}

- (void)go;
{
  [UIView beginAnimations:nil context:nil];
  [UIView setAnimationDuration:5.0];
  self.frame = CGRectMake(self.frame.origin.x-100,
                                 self.frame.origin.y,
                                 self.frame.size.width+100,
                                 self.frame.size.height);
  [UIView commitAnimations];
}

@end

Я создаю розетку из моего контроллера представления типа TestView, подключаю его и устанавливаю его тип в IB. Затем я создаю кнопку, чей обработчик вызывает [customView go]; Кажется, работает нормально.

...