Масштабирование IKImageView, управляемое NSSlider
-
20-09-2019 - |
Вопрос
Как лучше всего устанавливать коэффициент масштабирования изображения в IKImageView через NSSlider?
Мне удалось привязать слайдер либо к приблизить ИЛИ уменьшить действие IKImageView.Очевидно, что я бы предпочел видеть один ползунок, управляющий обоими этими действиями.Лучше всего, если изображение будет обновляться после каждого изменения ползунка (постоянно, даже если кнопка мыши еще не отпущена).
Решение
Эта демонстрация многое объясняет: ImageKitДемо
В частности, этот фрагмент - это то, что я искал:
- (IBAction) zoomSliderDidChange:(id)sender
{
[addProductPhotoImageView setZoomFactor:[sender floatValue]];
}
Другие советы
Способ привязки заключается в том, чтобы привязать коэффициент масштабирования изображения IK и значение ползунка к одному и тому же свойству вашего контроллера.Когда ползунок изменит значение свойства, представление изображения будет уведомлено и получит новое значение от вашего контроллера.
Одним из преимуществ этого способа является то, что вы можете добавить больше способов увеличения и уменьшения масштаба, и значение ползунка не устареет.Например, если IKImageView добавляет масштабирование (или если оно уже есть — на моем Mac нет мультитач), пользователь может масштабировать таким образом, и слайдер обновится автоматически.Этого не произойдет с IBAction
решение.
Другим примером могут быть команды меню «Увеличить» и «Уменьшить» (возможно, с помощью сочетаний клавиш ⌘+ и ⌘-), которые отправляют сообщения о действиях на ваш контроллер.Ваш контроллер ответит увеличением или уменьшением значения свойства (используя реализуемый им метод установки).При использовании привязок и изображение, и слайдер будут обновляться бесплатно.Без привязок вам пришлось бы явно обращаться как к представлению изображения, так и к ползунку, сообщая одному обновить коэффициент масштабирования, а другому — обновить ползунок.
Третий пример: «Коэффициент масштабирования:X%» в углу вашего окна.С помощью Bindings это может обновляться бесплатно независимо от того, как пользователь масштабирует изображение:перемещение ползунка, сведение/разжатие изображения или нажатие пункта меню.Без привязок это была бы еще одна вещь, о которой вам придется поговорить в ваших (как минимум трех) методах действий по изменению значения масштабирования.