Я пытаюсь рисовать некоторые дуги и круги с использованием Core Graphics. Я использую новый интерфейс Builder функции IBDesignable/IBInspectable, чтобы увидеть мой просмотр в реальном времени, и он просто действует так, как следует в Interface Builder. Очень просто говоря, вот мой код, который рисует круг:Ядро Графические рисунки неправильно масштабируются и транслируются на устройстве, но в интерфейсе Builder
-(void)drawCircleInRect:(CGRect)rect{
[self.circleColor setFill];
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.frame];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
// If you have content to draw after the shape,
// save the current state before changing the transform.
CGContextSaveGState(context);
[path fill];
// Restore the graphics state before drawing any other content.
CGContextRestoreGState(context);
}
Я звоню это в drawRect:
и self.circleColor
является IBInspectable
собственности UIColor
, который я поставил на белый. Вот результат, без проблем:
Однако, когда я бегу на тренажере или устройства (пробовал оба результат один и тот же), это то, что я получаю:
Это как масштабированный/неправильно расположенный на вид, и поэтому обрезается. Почему это может быть? Это как 2x. Если бы это было наоборот, я бы предположил, что это связано с масштабным коэффициентом Retina, но это все наоборот. Он слишком сильно затягивается в сетчатом устройстве и черпает нормальное изображение на моем адаптере интерфейса Mac's без сетчатки. Какие-либо предложения?
(нижняя черная полоса фактически панель вкладок, что я отключился, нет ничего ненормального там)
Спасибо, сменив 'frame' на' bounds', решила проблему. Любые предложения по * почему * он решает, хотя? –
frame.origin - это источник вашего представления внутри своего супервизора. bounds.origin - это (обычно) верхний левый угол вашего представления (0,0). См. Http://stackoverflow.com/questions/1210047/cocoa-whats-the-difference-between- the-frame-and-the-bounds – Darren