通过 TestFlight 加载时 IOS 应用程序不同

Posted

技术标签:

【中文标题】通过 TestFlight 加载时 IOS 应用程序不同【英文标题】:IOS app different when loading via TestFlight 【发布时间】:2017-03-13 17:22:59 【问题描述】:

我在故事板控制器中有一个视图,它扩展了我的自定义 UIView,当我尝试在 drawRect 中绘制渐变时,它在通过 XCode 加载到设备/sim 时显示正常,但是当我上传到 iTunes 后通过 TestFlight 安装时连接渐变起初不存在(显示黑色背景) - 它需要旋转设备并且渐变再次显示正常。什么可能导致这种行为?

- (void)drawRect:(CGRect)rect 
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();

NSArray *gradientColors = [NSArray arrayWithObjects:
                           (id)[[self colorWithHexString:@"FF7542"]CGColor],
                           (id)[[self colorWithHexString:@"FF7542"]CGColor],
                           (id)[[self colorWithHexString:@"FFC0A1"]CGColor],
                           nil];


CGFloat gradientLocations[] = 0, 1;
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) gradientColors, gradientLocations);

CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);

NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowColor : BLACK_SHADOW];
[shadow setShadowOffset : CGSizeMake (1.0, 1.0)];

【问题讨论】:

【参考方案1】:

我通过另一种方式创建渐变解决了这个问题,奇怪的是它在加载时首次显示而不需要旋转。

CGContextRef current_context = UIGraphicsGetCurrentContext();
CGContextSaveGState(current_context);

// Gradient
CGFloat locations[2] = 0.0, 1.0;
CGFloat components[8] = 1.00,0.75,0.63,1.0,1.00,0.46,0.26,1.0;
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorspace, components, locations, 2);
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextDrawLinearGradient(current_context, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorspace);

【讨论】:

以上是关于通过 TestFlight 加载时 IOS 应用程序不同的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8.2 升级不在 UIImageView 中显示图像,但仅在通过 iTunes 或 TestFlight 而不是 Xcode 加载的应用程序中

如何在运行时判断 iOS 应用程序是不是正在通过 TestFlight Beta 安装运行

从 testflight 安装时,我的 IOS 应用程序崩溃

通过 testflight 将 monotouch 开发的应用程序部署到 ios 6 但在 ios5 上可以

该应用程序在通过 Testflight 在 iOS 9.2.1 上启动几秒钟后崩溃

iOS 应用在适用于 iOS 14 及更低版本但不是 iOS 15+ 的 Testflight 上启动时崩溃