0

現在、ビューがあり、その中にスクロールビューがあります。そのscrollViewには、ボタンとUITableViewがあります。

条件付きで、この2つを上に上げたいと思います。私は現在これをやっています:

    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 のないビューで正常に機能します。

scrollView でオブジェクトを正しく移動する方法に関するヒントをいただければ幸いです。

ありがとう。

4

4 に答える 4

2

あなたの問題を理解したら、この特定のViewControllerのファイルインスペクターで「Autolayout」プロパティをオフにする必要があると思います。私は同じ問題を抱えていましたが、自動レイアウトのチェックを外すことで問題は解決しました。これはあなたの問題を解決するのに役立つかもしれません.

幸運を !!

于 2013-08-21T18:49:43.817 に答える
1

サイズ変更ではなく、単に移動する場合は、CGAffineTransform を使用してボタンを移動してみてください。(CGscale と CGtranslate を連結して、サイズを変更することもできます)。

したがって、ボタンの場合、次のようになります。

buttonContinue.transform = CGAffineTransformMakeTranslation(20,40);

これにより、ボタンが右に 20 ピクセル、下に 40 ピクセル移動します。

後で元に戻すには、次のように呼び出します。

buttonContinue.transform = CGAffineTransformIdentity;

また、余談ですが、上記の 4 行ではなく、1 行を使用して新しいフレームを作成できます。

buttonContinue.frame = CGRectMake(20, 40, 150, 25);
于 2013-08-21T18:22:07.890 に答える
0

これを試して、

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

それが機能しない場合は、要素addressTableViewおよびbuttonContinueの参照に問題があります。そして、それらがまだスクロールビューの使用内にない場合

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

scrollView 変数が IB の要素にリンクされていることを確認します。

于 2013-08-21T19:52:12.280 に答える
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;
}
于 2013-08-22T05:18:09.770 に答える