Ios 如何在绘制前清除子视图的内容
我使用两个块在子视图上动态绘制一些按钮。一个计算纵向模式的帧,另一个计算横向模式的帧。它工作得很好,但当我旋转时,它会覆盖旧的。因此,我的一些按钮出现了两次。以下是我检测原点的代码:Ios 如何在绘制前清除子视图的内容,ios,ipad,uiview,uibutton,Ios,Ipad,Uiview,Uibutton,我使用两个块在子视图上动态绘制一些按钮。一个计算纵向模式的帧,另一个计算横向模式的帧。它工作得很好,但当我旋转时,它会覆盖旧的。因此,我的一些按钮出现了两次。以下是我检测原点的代码: //i have defined blocks in viewDidLoad: and everything is ok till here - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOri
//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对象上根本不添加新按钮。换个旧的镜框就行了 如果需要添加新按钮。把旧的拿走!?要删除所有子视图,可以使用:
for(UIView* view in self.view.subviews)
{
[view removeFromSuperview];
}
根本不要添加新按钮。换个旧的镜框就行了 如果需要添加新按钮。把旧的拿走!?要删除所有子视图,可以使用:
for(UIView* view in self.view.subviews)
{
[view removeFromSuperview];
}
嗨
用下面的代码试试你在视图中分配的所有按钮
将被删除
嗨
用下面的代码试试你在视图中分配的所有按钮
将被删除
在从视图中删除视图之前,首先检查类,然后将其删除。之后,您可以根据方向在屏幕上添加按钮
for(UIView *view in [View to add buttons].subviews)
{
if ([view isKindOfClass:[UIButton class]]) [view removeFromSuperview];
}
如果您正在使用任何
customButton
,请在从视图中删除视图之前,先检查类,然后将其删除,然后将其替换为UIButton
。之后,您可以根据方向在屏幕上添加按钮
for(UIView *view in [View to add buttons].subviews)
{
if ([view isKindOfClass:[UIButton class]]) [view removeFromSuperview];
}
如果您正在使用任何
customButton
来代替UIButton
,customButtonClassName
任何UI更改都必须在主线程上完成,为什么要异步调用这些块?什么是撞车!?有日志吗?我在我的代码块中尝试了你的代码,但是出现了一个空屏幕。没有崩溃,但没有结果,因为任何UI更改都必须在主线程上执行,为什么要异步调用这些块?什么是撞车!?有日志吗?我在我的代码块中尝试了你的代码,但是出现了一个空屏幕。没有崩溃,但没有结果too@illis如果按钮添加了两次,则给按钮添加标签,并检查按钮是否存在,然后dnt添加。您无需每次旋转设备时重新绘制按钮。只要把它们移到适当的地方,如果需要的话,可以改变外观。我需要更多关于您的特殊情况的信息,以便能够提供帮助。@SVGreg谢谢,我solved@illis如果按钮添加了两次,则给按钮添加标签,并检查按钮是否存在,然后dnt添加。您无需每次旋转设备时重新绘制按钮。只需将它们移动到适当的位置,并根据需要更改外观。我需要有关您特定情况的更多信息,以便能够提供帮助。@SVGreg谢谢,我确实在块中尝试了此方法,后来又尝试了旋转方法。但它删除了所有的滚动视图。出现一个空白屏幕这将从视图中删除所有子视图。用一些标记值标记按钮的视图,以找到它们。我在块中尝试了此方法,后来又尝试了旋转方法。但它删除了所有的滚动视图。出现一个空白屏幕这将从视图中删除所有子视图。用一些标记值标记按钮的视图,以找到它们。