gpt4 book ai didi

ios - 具有阴影和旋转的多个 View 变得非常慢

转载 作者:行者123 更新时间:2023-11-29 10:59:18 25 4
gpt4 key购买 nike

我正在尝试制作多个 uiview 堆栈。这些 UIView 中的每一个都带有阴影、轻微的旋转和缩放。作为测试,我正在制作 10 个 10 个 View 的堆栈。绘制所有这些非常慢.. 有优化的好方法吗?我尝试从图像中制作阴影和背景,但这很丑陋而且同样缓慢。我将这些堆栈放在 UIScrollView 中

   for (int k = 0; k < 9; k++) {

for (int i = 0; i < 9; i++) {

UIView *stack = [[UIView alloc] initWithFrame:CGRectMake((i * 106), (k * 106), 110, 110)];

for (int i = 0; i < 10; i++) {

CardView *cardView = [[CardView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];

//cardView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"card_background.png"]];

cardView.layer.shadowOffset = CGSizeMake(0, 0);
cardView.layer.shadowOpacity = 0.3f;
cardView.layer.shadowPath = [UIBezierPath bezierPathWithRect:(CGRect){CGPointZero, cardView.layer.bounds.size}].CGPath; // Set shadow path, without this the performance is *really* bad
cardView.transform = CGAffineTransformMakeRotation(((arc4random() % 20) - 10.0f) / 100.0f);
cardView.transform = CGAffineTransformScale(cardView.transform, 0.35, 0.35);
cardView.layer.shouldRasterize = YES;
cardView.layer.rasterizationScale = 0.5;

cardView.center = CGPointMake(55, 55);

[stack addSubview:cardView];
}

[_backgroundView addSubview:stack];
}

}

编辑1;尝试了一些东西,禁用光栅化没有多大帮助,禁用阴影也没有太大帮助,旋转和缩放对于这么多的 uiview 来说也是资源密集型的。异步绘图(一次一个堆栈)是否是一种选择?

编辑2;无论如何,猜测制作 100 个 UIView 的速度很慢。如果我找到更好的(我猜是异步或类似的)解决方案,我会报告

最佳答案

您是否在某种动画中使用这些图像?如果不是,您可以尝试关闭光栅化以提高性能。

cardView.layer.shouldRasterize  = NO;

关于ios - 具有阴影和旋转的多个 View 变得非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723508/

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