UIGravityBehavior をプログラムでサブビューに追加していますが、常に機能するとは限りません。画像に示すように、タグ 101,102,103,104 を持つメイン ビューに 4 つのビューがあります。
しかし、何らかの理由でタグ103と104のビューでのみ機能するようです。これが私のコードです:
-(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つのサブビューでしか機能しないのですか?、私が間違っているのは何ですか?
私は本当にあなたの助けに感謝します