在ScrollView中移动按钮 - iOS

时间:2013-08-21 18:13:12

标签: ios objective-c uitableview uibutton

我目前有一个视图,在其中我有一个scrollView。在那个scrollView上我有一个按钮和一个UITableView。

鉴于某些条件,我想把这两件事情搞定。我目前正在这样做:

    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 个答案:

答案 0 :(得分:2)

如果我理解你的问题,我认为你应该取消选中" Autolayout"此特定ViewController的文件检查器中的属性。我有同样的问题,通过取消选中autolayout我的问题解决了。可能这将有助于解决您的问题。

祝你好运!!

答案 1 :(得分:1)

如果您只是移动它们,而不是调整大小,请尝试使用CGAffineTransform移动按钮。 (您也可以通过连接CGscale和CGtranslate来调整大小。)

因此,对于您的按钮,它将非常接近:

buttonContinue.transform = CGAffineTransformMakeTranslation(20,40);

这会将您的按钮向右移动20像素,向下移动40像素。

要稍后将其移回,只需致电:

buttonContinue.transform = CGAffineTransformIdentity;

另外,另外,您可以使用一行创建一个新帧,而不是上面的四行:

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

答案 2 :(得分: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上的元素链接。

答案 3 :(得分: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;
}