Масштабирование IKImageView контролируется NSSlider
Как лучше всего устанавливать коэффициент масштабирования изображения в IKImageView через NSSlider?
Я смог привязать ползунок либо для увеличения, либо для уменьшения действия IKImageView. Очевидно, что я бы предпочел увидеть один слайдер, управляющий обоими этими действиями. Лучше всего, если изображение обновляется после каждого изменения ползунка (непрерывно, даже если кнопка мыши еще не отпущена).
2 ответа
Эта демонстрация многое объясняет: ImageKitDemo
В частности, этот фрагмент - то, что я искал:
- (IBAction) zoomSliderDidChange:(id)sender
{
[addProductPhotoImageView setZoomFactor:[sender floatValue]];
}
Способ Bindings заключается в том, чтобы связать коэффициент масштабирования вида изображения IK и значение ползунка с одним и тем же свойством вашего контроллера. Когда ползунок изменяет значение свойства, представление изображения будет уведомлено и получит новое значение от вашего контроллера.
Одним из преимуществ этого способа является то, что вы можете добавить больше способов увеличения и уменьшения, и значение в ползунке не устареет. Например, если IKImageView добавляет масштабирование пинч (или если оно уже есть - у меня нет мультитач на моем Mac), пользователь может увеличить масштаб таким образом, и ползунок обновится автоматически. Этого не случится с IBAction
решение.
Другим примером могут быть команды меню Zoom In и Zoom Out (возможно, с помощью сочетаний клавиш and + и)-), которые отправляют сообщения действий на ваш контроллер. Ваш контроллер будет отвечать, увеличивая или уменьшая значение свойства (используя метод установки, который он реализует). При использовании привязок как изображение, так и ползунок будут обновляться бесплатно. Без привязок вам пришлось бы явно разговаривать как с изображением, так и с ползунком, говоря одному обновлять коэффициент масштабирования, а другому обновлять ползунок.
Третий пример - отображение "Коэффициент масштабирования: X%" в углу вашего окна. С помощью привязок это можно обновлять бесплатно независимо от того, как пользователь увеличивает изображение: перемещая ползунок, сжимая / открепляя изображение или нажимая элемент меню. Без привязок это было бы еще одной вещью, с которой вы должны поговорить в своих (как минимум трех) методах действия change-the-zoom-value.