gpt4 book ai didi

ios - 在设置 view.frame 之后设置 view.layer.anchorpoint 会使 View 闪烁

转载 作者:行者123 更新时间:2023-11-29 03:17:37 25 4
gpt4 key购买 nike

[self setTransform:CGAffineTransformIdentity];
[self setFrame:CGRectMake(o.x, o.y, width, self.frame.size.height)];
if(width != 0)
{
self.layer.anchorPoint=CGPointMake((wsCollectionView_CellSize/2)/width, 0.5);
}
[self setTransform:CGAffineTransformMakeRotation(angle)];

我使用这段代码来改变我的 View 的外观,但是当这段代码被执行时,我可以看到 anchor 附近有一点点闪烁,就像它被调整一样,我认为这是因为当我设置新框架时,然后是新 anchor 点已设置,正在重绘。所以我猜我需要的是同时执行它或者必须同时设置这些属性。实现这一目标的方法是什么?或者可能有一种方法可以在点中设置 anchor 并且它将保持不变?

最佳答案

层的 anchorPoint 是一个动画属性。这意味着,如果你只是设置它,那么默认情况下图层将动画到新值。当 anchor 与您正在进行的变换作斗争时,此动画可能会产生您所看到的闪烁。

为防止这种情况,您需要在禁用操作的 CATransaction 中进行更新:

[CATransaction begin];
[CATransaction setDisableActions:YES];
layer.anchorPoint = ...
[CATransaction commit];

这将立即更新图层的 anchor 。

通常,更新 anchor 也会更新 View 的框架,因此您通常希望在设置 anchor 后设置框架!除非上面的代码中已经考虑到了这一点。

关于ios - 在设置 view.frame 之后设置 view.layer.anchorpoint 会使 View 闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21502830/

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