2013-08-21 3 views
0

У меня сейчас есть представление, и внутри него у меня есть scrollView. На этом scrollView у меня есть кнопка и UITableView.Переместить кнопку в ScrollView - iOS

Учитывая некоторые условия, я хочу переместить эти две вещи. Я в настоящее время это делаю:

tempFrame = [addressTableView frame]; 
    tempFrame.origin.x = 0.0; 
    tempFrame.origin.y = 2.0; 
    tempFrame.size.width = 320.0; 
    tempFrame.size.height = 103.0; 
    [addressTableView setFrame:tempFrame];   
    // [self.scrollView addSubview:self.addressTableView]; (does not do anything) 

    tempFrame = [buttonContinue frame]; 
    tempFrame.origin.x = 20.0; 
    tempFrame.origin.y = 40.0; 
    tempFrame.size.width = 150.0; 
    tempFrame.size.height = 25.0; 
    [buttonContinue setFrame:tempFrame]; 
    // [self.scrollView addSubview:self.buttonContinue]; (does not do anything) 

Этот метод отлично работает при просмотре без прокрутки.

Любые советы о том, как правильно перемещать объекты в scrollView, будут очень признательны.

Спасибо.

ответ

1

Если вы просто перемещаете их, а не изменяете размер, попробуйте переместить кнопку с помощью CGAffineTransform. (Вы также можете изменить размер, объединив CGscale и CGtranslate).

Так что для вашей кнопки, это будет что-то очень близко к:

buttonContinue.transform = CGAffineTransformMakeTranslation(20,40); 

Это переместить кнопку 20pixels вправо и 40 пикселов вниз.

Чтобы переместить его позже просто позвонить:

buttonContinue.transform = CGAffineTransformIdentity; 

Кроме того, как в сторону, вы можете создать новый фрейм, используя одну линию, а на четыре строки выше, как:

buttonContinue.frame = CGRectMake(20, 40, 150, 25); 
+0

Спасибо за ответ. К сожалению, это не сработало. Я попробовал оба метода. Я думаю, что это может быть связано с тем, что эта кнопка и вид таблицы находятся в scrollView, который находится внутри «View». Но обратите внимание, что «Реферирование» для обоих из них - Владелец файла. – FidelCashflo

+0

Ваши кнопки подключены к своим IBOutlets (и являются ли эти свойства IBOutlets?) – Fluffhead

+0

Да, они подключены, и они также являются объектами. – FidelCashflo

2

Если я понимаю вашу проблему, я думаю, вы должны снять флажок «Autolayout» в инспекторе файлов для этого конкретного ViewController. У меня была такая же проблема, и, сняв автоотключение, моя проблема была решена. Может быть, это поможет решить вашу проблему.

Удачи !!

+0

Спасибо за ответ. Это работало. Но при отключении автозапуска испорчен экран scrollView. Как и в, он подталкивает все к вершине и по экрану. Должен ли я сбросить размер для scrollView? – FidelCashflo

+0

Я думаю, что другого выхода нет, поэтому вам нужно сбросить все :( –

0

Попробуйте это,

[addressTableView setFrame:CGRectMake(0,2,320,103)];   
[buttonContinue setFrame:CGRectMake(20,40,150,25)]; 

Если это не работает, то есть проблема по ссылке для ваших элементов addressTableView и buttonContinue. И если они уже не внутри Scrollview использовать

[self.scrollView addSubview:addressTableView]; 
[self.scrollView addSubview:buttonContinue]; 

Убедившись переменная Scrollview связана с элементом на IB.

0

Лучший способ кнопки перемещения

[btn addTarget:self action:@selector(pointMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside]; 
-(IBAction) pointMoved:(id) sender withEvent:(UIEvent *) event 
{ 
    CGPoint point = [[[event allTouches] anyObject] locationInView:self]; //here you can give scrollview 
    UIControl *control = sender; 
    control.center = point; 
} 
Смежные вопросы