我使用两个块动态地在子视图上绘制一些按钮。一个计算纵向模式的帧,另一个计算横向。它工作得很好但是当我旋转时,它会写入旧的。因此,我的一些按钮来了两次。这是我检测oriantation的代码:
//i have defined blocks in viewDidLoad: and everything is ok till here
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if(interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
dispatch_async(dispatch_get_main_queue(), PortraitBlock);
}
else
{
dispatch_async(dispatch_get_main_queue(), LandscapeBlock);
}
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight ||
interfaceOrientation == UIInterfaceOrientationPortrait ||
interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}
现在,我如何清理视图,我添加按钮?
注意:我在UIView对象上添加按钮,该对象也在UIScrollView对象上
答案 0 :(得分:5)
嗨,。,
使用您在视图上分配的所有按钮尝试以下代码 将被删除。
for(UIButton *view in yourview.subviews)
{
[view removeFromSuperview];
}
答案 1 :(得分:2)
在从视图中删除视图之前,请先检查课程,然后将其删除。之后,您可以根据方向在屏幕上添加按钮。
for(UIView *view in [View to add buttons].subviews)
{
if ([view isKindOfClass:[UIButton class]]) [view removeFromSuperview];
}
如果您使用任何customButton
,请提及customButtonClassName
代替UIButton
。
答案 2 :(得分:1)
根本不添加新按钮。只需更改旧框架。
如果需要添加新按钮。只需删除旧的!?要删除所有子视图,您可以使用:
for(UIView* view in self.view.subviews)
{
[view removeFromSuperview];
}