gpt4 book ai didi

iphone - UIPicker 的替代品

转载 作者:行者123 更新时间:2023-12-01 17:34:13 24 4
gpt4 key购买 nike

SLOT-MACHINE 应用程序还有其他方法吗?这是因为 UIPICKER 方法没有缓慢的动画效果。

最佳答案

这可以使用 CALayer 来完成。动画片。

您的主 slotMachineView 层的类需要是 CATransformLayer允许子层的 3D 变换。

假设您有 10 个代表卷轴上符号的方形图像。为每个图像创建一个 CALayer谁的内容属性是您的图像之一。然后对每一层,您需要应用 2 个变换:

  • 首先,您需要围绕其 X 轴旋转每一层 (2 * PI)/10
  • 然后平移一些距离(您需要计算)
    Z 轴。

  • 现在将这些层添加到您的 View 层。您现在应该会看到围绕 X 轴的图像“圆柱体”。

    要旋转圆柱体,您需要调整第一个变换 - 使用 CAAnimation或者通过使用计时器并通过计时器触发的偏移量调整 X 轴旋转。

    我将留给您找出完整的实现细节 - 但这里有一些代码可以加载并创建一个初始“卷轴”
        int imageCount = 16;

    for (int i = 0; i < imageCount; i++) {
    // Load image from the bundle

    NSString * fileName = [NSString stringWithFormat: @"Image-%d", i];
    NSString * filePath = [[NSBundle mainBundle] pathForResource: fileName ofType: @"jpeg"];

    UIImage * image = [UIImage imageWithContentsOfFile: filePath];

    // Create a layer with the image as content - My image size was 60x60

    CALayer * imageLayer = [CALayer layer];
    imageLayer.bounds = (CGRect){CGPointZero, {60.0, 60.0}};
    imageLayer.contents = (id)image.CGImage;
    imageLayer.position = (CGPoint){CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds)};

    // Set the initial image transform - I've hardcoded the translate along the
    // z-axis to 150, but this will vary depending on the number of images
    // and their size - you'll need to do some maths to work it out... sines or
    // cosines or somesuch
    CGFloat angle = (2.0 * M_PI) / imageCount * i;
    CATransform3D transform = CATransform3DMakeRotation(angle, 1.0, 0.0, 0.0);
    transform = CATransform3DTranslate(transform, 0.0, 0.0, 150.0);
    imageLayer.transform = transform;

    [self.layers addObject: imageLayer];

    [self.view.layer addSublayer: imageLayer];
    }
    }

    要旋转它,您需要做的就是更改变换的旋转部分。为了获得额外的功劳,您可以在图层远离中心时向它们添加越来越多的阴影。

    关于iphone - UIPicker 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9801759/

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