iphone: развернуть и свернуть UIView программно - PullRequest
4 голосов
/ 01 марта 2011

Я очень новичок в разработке для iPhone / iPad. Можете ли вы помочь мне создать это программно. Я хочу программно развернуть / свернуть UIView.

Это развернутое / сворачиваемое представление будет иметь некоторое текстовое поле и метки, которые должны появляться и исчезать при этом представлении

Ответы [ 4 ]

12 голосов
/ 01 марта 2011

Предположим, у вас есть экземпляр UIView в классе UIViewController, подобный этому:

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(x, y, w1, h1)];
[self.view addSubview:view];

на основе требования, что вы устанавливаете видимость представления, как я это сделал здесь.загрузка его представления ..

[view setHidden:YES];

Сохранение флага для проверки видимости экземпляра представления. Допустим, isViewVisible - это мой флаг для проверки видимости представления .. Я установил его на NO вначало ..

isHelpViewVisible = NO;

и я написал здесь метод действия (viewClicked), чтобы развернуть и свернуть объект представления, передать этот метод действия экземпляру кнопки, и он будет работать.

- (void)viewClicked:(id)sender {

    if (!isViewVisible) {
        isViewVisible = YES;
        [view setHidden:NO];
        [UIView beginAnimations:@"animationOff" context:NULL]; 
        [UIView setAnimationDuration:1.3f];
        [view setFrame:CGRectMake(x, y, w1, h1)];
        [UIView commitAnimations];
    } else {
        isViewVisible = NO;
        [view setHidden:NO];
        [UIView beginAnimations:@"animationOff" context:NULL]; 
        [UIView setAnimationDuration:1.3f];
        [view setFrame:CGRectMake(x, y, width, hight)];
        [UIView commitAnimations];
    }

}

и добавьте текстовые поля и объекты меток к объекту представления как подпредставления и установите анимацию для этих объектов также .. это будет работать.

3 голосов
/ 20 сентября 2013

Заменяет следующее сверху:

[UIView beginAnimations:@"animationOff" context:NULL];
[UIView setAnimationDuration:1.3f];
[view setFrame:CGRectMake(x, y, w1, h1)];
[UIView commitAnimations];

С Новым способом создания анимации:

[UIView animateWithDuration:1.3f animations:^{
    self.frame = CGRectMake( x1, x2, w1, h1);
} completion:^(BOOL finished) {
    // this gives us a nice callback when it finishes the animation :)
}];
1 голос
/ 01 марта 2011

Чтобы изменить размер / положение UIView в его родительском элементе, просто измените его свойство frame:

CGRect newFrame = myView.frame;
newFrame.origin.x = newX;
newFrame.origin.y = newY;
newFrame.size.width = newWidth;
newFrame.size.height = newHeight;
myView.frame = newFrame;
0 голосов
/ 01 марта 2011

Вы можете попробовать это

<code>CGRect frame = [currentView frame];
frame.size.width = 999;//Some value
frame.size.height = 444;//some value
[currentView setFrame:frame];
Вы можете следовать этому, когда хотите увеличить / уменьшить размер представления
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...