滚动视图中的移动按钮-iOS
我目前有一个视图,其中有一个滚动视图。在滚动视图上,我有一个按钮和一个UITableView 在一定条件下,我想把这两件事往上推。我目前正在这样做:滚动视图中的移动按钮-iOS,ios,objective-c,uitableview,uibutton,Ios,Objective C,Uitableview,Uibutton,我目前有一个视图,其中有一个滚动视图。在滚动视图上,我有一个按钮和一个UITableView 在一定条件下,我想把这两件事往上推。我目前正在这样做: tempFrame = [addressTableView frame]; tempFrame.origin.x = 0.0; tempFrame.origin.y = 2.0; tempFrame.size.width = 320.0; tempFrame.size.height = 103.0;
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中正确移动对象的提示都将不胜感激
谢谢。如果只是移动它们,而不是调整大小,请尝试使用CGAffineTransform移动按钮。(您还可以通过连接CGscale和CGtranslate来调整大小) 因此,对于您的按钮,它将非常接近:
buttonContinue.transform = CGAffineTransformMakeTranslation(20,40);
这会将按钮向右移动20像素,向下移动40像素
稍后要将其移回,只需调用:
buttonContinue.transform = CGAffineTransformIdentity;
另外,您还可以使用一条线(而不是上面的四条线)创建一个新框架,如下所示:
buttonContinue.frame = CGRectMake(20, 40, 150, 25);
如果只是移动它们,而不是调整大小,请尝试使用CGAffineTransform移动按钮。(您还可以通过连接CGscale和CGtranslate来调整大小) 因此,对于您的按钮,它将非常接近:
buttonContinue.transform = CGAffineTransformMakeTranslation(20,40);
这会将按钮向右移动20像素,向下移动40像素
稍后要将其移回,只需调用:
buttonContinue.transform = CGAffineTransformIdentity;
另外,您还可以使用一条线(而不是上面的四条线)创建一个新框架,如下所示:
buttonContinue.frame = CGRectMake(20, 40, 150, 25);
如果我理解您的问题,我认为您应该取消选中此特定ViewController的文件检查器中的“Autolayout”属性。我也遇到了同样的问题,通过取消选中autolayout,我的问题得到了解决。也许这将有助于解决你的问题
祝你好运 如果我理解您的问题,我认为您应该取消选中此特定ViewController的文件检查器中的“Autolayout”属性。我也遇到了同样的问题,通过取消选中autolayout,我的问题得到了解决。也许这将有助于解决你的问题 祝你好运 试试这个
[addressTableView setFrame:CGRectMake(0,2,320,103)];
[buttonContinue setFrame:CGRectMake(20,40,150,25)];
如果这不起作用,那么元素addressTableView和ButtonContinContinue的引用就会出现问题。如果它们不在滚动视图中,请使用
[self.scrollView addSubview:addressTableView];
[self.scrollView addSubview:buttonContinue];
确保您的scrollView变量与其IB上的元素链接。试试这个
[addressTableView setFrame:CGRectMake(0,2,320,103)];
[buttonContinue setFrame:CGRectMake(20,40,150,25)];
如果这不起作用,那么元素addressTableView和ButtonContinContinue的引用就会出现问题。如果它们不在滚动视图中,请使用
[self.scrollView addSubview:addressTableView];
[self.scrollView addSubview:buttonContinue];
确保scrollView变量与其IB上的元素链接。移动按钮的最佳方式
[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;
}
移动按钮的最佳方式
[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;
}
谢谢你的回复。不幸的是,这没有起作用。我尝试了两种方法。我认为这可能与此按钮和表视图位于“视图”内部的滚动视图上有关。但是请注意,这两个按钮的“引用出口”都是文件的所有者。您的按钮是否连接到它们的IBOutlet(以及这些IBOutlet属性?)是的,它们已连接,并且也是属性。感谢您的回复。不幸的是,这没有起作用。我尝试了两种方法。我认为这可能与此按钮和表视图位于“视图”内部的滚动视图上有关。但是请注意,这两个按钮的“引用出口”都是文件的所有者。您的按钮是否连接到它们的IBOutlet(以及这些IBOutlet属性?)是的,它们已连接,并且也是属性。感谢您的回复。这确实奏效了。但是取消选中autolayout会弄乱scrollView屏幕。与中一样,它将所有内容都推到屏幕的顶部并离开屏幕。我必须重置scrollView的大小吗?我认为没有其他方法,因此您必须重置所有内容:(感谢您的回复。这确实有效。但取消选中“自动布局”会弄乱scrollView屏幕。如中所示,它会将所有内容推到屏幕的顶部和底部。我是否必须重置scrollView的大小?我认为没有其他方法,因此您必须重置所有内容:(