我目前有一个视图,在其中我有一个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中正确移动对象的任何提示都将非常感激。
感谢。
答案 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;
}