интересно, может ли кто-нибудь помочь мне, но в то же время, надеюсь, я могу помочь кому-то еще ...
У меня есть эта проблема с градиентом CG, который работает в симуляторе, но вылетает на устройстве.Я искал и читал ветку "Градиент CG запускается на симуляторе, но не на iPhone", и я думаю, что это похожая проблема, то есть из-за того, что я использую ARC и он слишком рано выпускает CGFloat, но я не могу понятьвокруг того, как реализовать предложенные исправления в отношении моего кода.(Пожалуйста, смотрите код внизу)
Так что я был бы признателен, если бы кто-то мог помочь мне с этой частью ??
В любом случае, сбой настолько плох, что, кажется, продолжает работатьприложение на устройстве в действительно странном состоянии, я могу удалить приложение на устройстве и попытаться запустить его снова с закомментированным кодом, но это все равно вызывает сбой.Независимо от того, что я сделал, это не позволило бы приложению снова работать на устройстве.Оказывается, что после нескольких часов почесывания головы мне нужно было перезагрузить устройство iPad, на котором я пытался развернуть устройство, поскольку оно все еще удерживало профиль инициализации, несмотря на то, что оно было закрыто / удалено с устройства.
Надеюсь, это имеет смысл и может помочь кому-то тоже.
Спасибо
CGFloat colors [] = {
0, 0, 0, 0,
0, 0, 0, 0
};
CGFloat colors2 [] = {
190.00/255.00, 211.00/255.00, 60.00/255.00, 1.0,
138.00/255.00, 153.00/255.00, 43.00/255.00, 1.0
};
CGFloat colors3 [] = {
159.00/255.00, 164.00/255.00, 39.00/255.00, 1.0,
110.00/255.00, 120.00/255.00, 27.00/255.00, 1.0
};
CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient;
if (which_state==@"1") {
gradient = CGGradientCreateWithColorComponents(baseSpace, colors2, NULL, 2);
NSLog(@"which state has changed");
} else if (which_state==@"2"){
gradient = CGGradientCreateWithColorComponents(baseSpace, colors3, NULL, 2);
} else if (which_state==@"3"){
gradient = CGGradientCreateWithColorComponents(baseSpace, colors3, NULL, 2);
} else if (which_state==@"0"){
gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2);
}
CGColorSpaceRelease(baseSpace), baseSpace = NULL;
CGContextSaveGState(context);
CGContextMoveToPoint(context, (width/4*0)+5, 0);
CGContextAddLineToPoint(context, (width/4*0)+30, self.frame.size.height-3);
CGContextAddLineToPoint(context, (width/4*1)+30, self.frame.size.height-3);
CGContextAddLineToPoint(context, (width/4*1)+5, 0);
CGContextAddLineToPoint(context, (width/4*0)+5, 0);
CGContextClip(context);
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient), gradient = NULL;
CGContextRestoreGState(context);
CGContextFillPath(context);