gpt4 book ai didi

iOS 向 subview 添加 UIGravityBehavior 并不总是有效

转载 作者:行者123 更新时间:2023-11-29 03:09:18 27 4
gpt4 key购买 nike

我正在以编程方式将 UIGravityBehavior 添加到 subview ,但并不总是有效。我在主视图中有 4 个 View ,标签为 101,102,103,104,如图所示:

enter image description here

但出于某种原因,它似乎只适用于标签 103 和 104 的 View 。这是我的代码:

-(void)viewsGoinDown
{
NSPredicate *tagPredicate = [NSPredicate predicateWithFormat:@"self.tag >= 100"];
NSArray *resultArray = [[self.view subviews] filteredArrayUsingPredicate:tagPredicate];
for (NSUInteger i =0 ; i < resultArray.count; i++)
{
NSUInteger sleeping = 2;
UIView *mySubview = resultArray [i];
if (i == 0)
{
sleeping = 0;

}

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

sleep(sleeping);


dispatch_async(dispatch_get_main_queue(), ^()
{
[self moveDownViews:mySubview];

});


});
}
}

-(void)moveDownViews:(UIView*)myView
{
self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
self.gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[myView]];
self.gravityBehavior.magnitude = 1;
[self.animator addBehavior:self.gravityBehavior];

}

我的问题是为什么只适用于这 2 个 subview ?我做错了什么?

非常感谢你的帮助

最佳答案

请在下面找到工作代码:

附言我冒昧地更改了一些实现,您可以根据自己的喜好更改回来。

-(void)viewsGoinDown
{
NSPredicate *tagPredicate = [NSPredicate predicateWithFormat:@"self.tag >= 100"];
NSArray *resultArray = [[self.view subviews] filteredArrayUsingPredicate:tagPredicate];
NSUInteger sleeping = 0;
for (NSUInteger i =0 ; i < resultArray.count; i++)
{

UIView *mySubview = resultArray [i];
[self performSelector:@selector(moveDownViews:) withObject:mySubview afterDelay:sleeping];
sleeping++;
}

}

-(void)moveDownViews:(UIView *)myView
{
self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
self.gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[myView]];
self.gravityBehavior.magnitude = 1;
[self.animator addBehavior:self.gravityBehavior];
}

关于iOS 向 subview 添加 UIGravityBehavior 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22389055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com