NSRect bounds = [self bounds];
NSSize newSize;
newSize.width = bounds.size.width;
newSize.height = bounds.size.height;
[image setSize:newSize];
Я не знаю, зачем ты это делаешь.
NSRect imageRect;
imageRect.origin = NSZeroPoint;
imageRect.size = [image size];
A.k.a. [self bounds].size
.
NSRect drawingRect = imageRect;
[image drawInRect:drawingRect fromRect:imageRect operation:NSCompositeSourceOver fraction:1];
т.е. [image drawInRect:[self bounds] fromRect:[self bounds] operation:NSCompositeSourceOver fraction:1]
.
Если вы пытаетесь нарисовать изображение в его естественном размере, нет никаких оснований когда-либо отправлять ему сообщение setSize:
. Вырежьте всю первую часть, а остальное должно работать нормально.
Если вы пытаетесь заполнить экран (который будет масштабироваться, что будет противоречить комментарию), установите drawingRect
на [self bounds]
, а не imageRect
. Это в точности так, как написано:
image,
draw into (the bounds of the view),
from (the image's entire area).
[image
drawInRect:[self bounds]
fromRect:imageRect
⋮
];
Ни отрисовка с фиксированным положением в натуральном размере, ни отрисовка на весь экран не являются эффективной заставкой. Последний не подлежит возврату; Вы можете сделать первое полезным, анимируя изображение вокруг экрана.