Я настраиваю свой BEMSimpleLineGraph и смог сделать это успешно, за исключением затенения линейного градиента. После того, как этот код ссылки в указанном примере Obj-C проектCGContextDrawLinearГрадиент, вызывающий EXC_BAD_ACCESS
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };
CGFloat components[8] = {
1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 0.0
};
self.myGraph.gradientBottom = CGGradientCreateWithColorComponents(colorspace, components, locations, num_locations);
и транскрибировать его к этому в Swift:
let colorspace:CGColorSpaceRef = CGColorSpaceCreateDeviceRGB()
let num_locations:size_t = 2
var locations: [CGFloat] = [0.0, 1.0]
var components: [CGFloat] = [
1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 0.0
]
self.myGraph.gradientBottom = CGGradientCreateWithColorComponents(colorspace, components, locations, num_locations)
все строит правильно, но бросает ошибку памяти EXC_BAD_ACCESS в файле BEMLine.m включены, остановка на этой линии
CGContextDrawLinearGradient(ctx, self.bottomGradient, CGPointZero, CGPointMake(0, CGRectGetMaxY(fillBottom.bounds)), 0);
я включил в Obj-C мостовую заголовок, добавлены рамки CoreGraphics, включен нижний цвет в атрибуты панели повторно Spectric ViewController в Storyboard, ссылается на страницы разработки Apple, чтобы обеспечить правильные типы данных всех параметров, но я все еще высыхаю. При проверке сходства ошибок я также понял, что та же ошибка возникает при попытке нарисовать верхний линейный градиент. Ошибка, похоже, лежит в коде Obj-C, который пытается нарисовать градиент, но опять-таки я не понимаю, что делать.
разделить полный отчет о сбое (файл '.crash')? –
@ JohannesWeiß спасибо, что ответив! Я загрузил его здесь для вас: (https://drive.google.com/file/d/0ByFqolB5nSXKU1JhYjlYVlpjWTQ/view?usp=sharing) –
У меня был вид, и похоже, что 'self.bottomGradient' не ноль/NULL, но указывает на бит памяти, который не содержит допустимого градиента. –