请帮助我,我面临非常危急的情况, 在scrollView的子视图中拖动视图。
a:)我有滚动视图(让我们的名字A ),在这里面是一个覆盖整个滚动视图的视图(让我们打电话给B ),现在'B'包含225个子视图(15 * 15)(称为目标视图)。
b:)我在 A 下面有另一个视图,其中包含7个子视图(称为图块),每个图块都位于视图中(名为 tileContaner View )。
问题? 1.当我在 B 的子视图(目标视图)内拖动图块时,它会消失。
要求。 将瓷砖容器中的平铺视图放置在scrollview的目标视图或 B 的子视图中,其中Tile与Target相交。
答案 0 :(得分:0)
在此方法中删除[tileView removeFromSuperview];因为它实际上删除了tileView。
-(void)placeTile:(TileView*)tileView atTarget:(TargetView*)targetView {
[UIView animateWithDuration:0.35 delay:0.00 options:UIViewAnimationOptionCurveEaseOut animations:^{
}
感谢。
答案 1 :(得分:0)
//根据我的评论构建
在c部分你有,tileView.frame = CGRectMake(targetView.frame.origin.x,targetView.frame.origin.y,20,20);我认为,因为你正在做targetView.frame.origin.x,targetView.frame.origin.y它只是把它放在屏幕上。我认为它应该是0,0作为你的添加来查看你的坐标。
-(void)placeTile:(TileView*)tileView atTarget:(TargetView*)targetView {
[UIView animateWithDuration:0.35 delay:0.00 options:UIViewAnimationOptionCurveEaseOut animations:^{
[tileView removeFromSuperview];
tileView.frame=CGRectMake(targetView.frame.origin.x, targetView.frame.origin.y, 20, 20);
[targetView addSubview:tileView];
NSLog(@"%f,%f,%f,%f",tileView.frame.origin.x,tileView.frame.origin.y,tileView.frame.size.width,tileView.frame.size.height);
[tileView bringSubviewToFront:targetView];
}
completion:^(BOOL finished){
}];
将tileview设置为与targetView具有相同的x和y,但是添加到目标视图。我认为你想把它放在0,0或者转换点。
[UIView animateWithDuration:0.35 delay:0.00 options:UIViewAnimationOptionCurveEaseOut
animations:^{
tileView.frame=CGRectMake(0, 0, 20, 20);
[targetView addSubview:tileView];
}
completion:^(BOOL finished){
}];
编辑:
iMobile提出了一个很好的观点,来自苹果的文档说addSubview在添加之前已经删除了视图。
"Views can have only one superview. If view already has a superview and that view is
not the receiver, this method removes the previous superview before making the
receiver its new superview."