В чем разница между границами и рамкой? На самом деле, почему существуют «границы»? Размер «границ» равен размеру кадра, а начало границы всегда должно быть 0,0.Границы NSView против кадра
ответ
Из Руководства View and Window Architecture программирования для прошивки:
Объект вида отслеживает его размер и местоположение с помощью рамы, границ, и центральных свойств:
кадра свойства содержит кадр прямоугольник , который задает размер и местоположение вида в его системе координат супервизора.
границы свойства содержит границы прямоугольник, который определяет размера представления (и его содержание происхождения) в собственной местной координаты системы представления.
Свойство центра содержит известную центральную точку зрения в системе координат view.
Вот хорошая визуализация этого объяснения:
Исправить. См. Мой вопрос. Оценки всегда были бы 0,0 для начала координат, а размеры были бы одинаковыми. Итак, почему же вообще существуют границы, поскольку кадр включает в себя всю информацию о всех связанных? – David
Я никогда не смотрел на это. Но кажется очевидным, что вам нужны две ссылки. Потому что 40,40 не подходит для происхождения содержимого представления, но верно для ссылки на то, где представление находится внутри супервизора. Я также предполагаю, что представление должно знать о своем собственном пространстве содержимого и давать информацию о том, где он должен быть (Frame). Информация может выглядеть одинаково, но на самом деле это две разные вещи. Посмотрите на них как на вид. Кадр ссылки на то, где он находится. И это границы, которые формируют себя – markhunte
Хотя этот ответ в целом правильный, поскольку это вопрос Mac (он помечен 'NSView'), соответствующая документация является [Просмотр руководства по программированию для какао] (http://developer.apple.com /library/mac/#documentation/Cocoa/Conceptual/CocoaViewsGuide/Introduction/Introduction.html), а не версию iOS, с которой вы связались. Обратите внимание, что на Mac система координат перевернута по умолчанию, с начальной точкой в нижнем левом углу. –
яблоко документы в первом ответе не покрывает то, что происходит с рамкой и рамок после поворота к альбомной ориентации. Чтобы быть более полным, вы должны знать, что рамка окна и корневой вид не изменяется после вращения, но границы выполняются. See this article для получения более подробной информации и будьте осторожны с использованием рамки как ссылки для чего-либо, кроме портретной ориентации.
Из статьи:
Если ваш контроллер представления имеет верхний уровень вида без окна (то есть, это самого нижней точки зрения управление), затем
self.frame
всегда в портретной ориентации. Wha? Да, всегда на портрете - Какие изменения превращают ваш взгляд. Так что ваш
self.bounds
всегда точны (имея в виду последнюю точку), но
self.frame
может или не может дать пропорции, что пользователь действительно видя, , поскольку кадр каждого вида не сообщается с точки зрения координат супервизора и принимает во внимание любые преобразования, применяемые к виду .
Происхождение границы не всегда 0,0. Легко понять разницу между рамкой и границами, если вы посмотрите, как свойство bound bounds свойства UIScrollView во время прокрутки.
Например, у вас есть UIScrollView с фреймами (0, 0, 320, 460), ограничениями (0, 0, 320, 460) и ContentSize (640, 460).Его рамка всегда будет (0, 0, 320, 460), но координата X координат будет меняться в зависимости от расстояния прокрутки.
Может быть полезно, если вы хотите что-то изменить в UIScrollView (например, создавать и удалять страницы, например,), чтобы вы знали расстояние прокрутки.
Рамка видов представляет собой прямоугольник, в который он может полностью вписаться. Кажется, что границы и рамки одинаковы, но это не так. Рассмотрите квадрат, который просто повернут около 45 градусов!
Здесь рамка этого повернутого квадрата будет прямоугольником, чтобы полностью заполнить его и поэтому он будет отличаться от границ этого объекта.
P.S главным образом в повернутых частях рамки и рамки имеют тенденцию отличаться друг от друга.
- 1. границы против кадра UIAlertView
- 2. Обновление кадра NSView каждые миллисекунды
- 3. NSView -dataWithPDFInsideRect: и границы границ
- 4. NSCell против NSView для сетки?
- 5. Получить макет кадра NSView (т. Е. IbLayoutInset)
- 6. Tkinter границы кадра не показывая
- 7. Список против кадра данных
- 8. Установить масштаб NSView
- 9. CALayer против производительности NSView с поддержкой Layer
- 10. глобальная рамка против стопки кадра
- 11. Absolute расположен ребенок против границы
- 12. Удалить GtkScrolledWindow границы кадра в C
- 13. Вращение NSView
- 14. Как найти абсолютную позицию кадра NSView в окне
- 15. NSView enterFullScreenWithOptions: масштабирование NSView
- 16. NSView - при каких условиях границы и рамки * могут быть неравными?
- 17. Вектор против кадра данных в R
- 18. Как нарисовать NSView на NSView?
- 19. Масштабирование в NSView
- 20. Создание выравнивания вправо NSView
- 21. Непризнанный селектор - [NSView borderRect]
- 22. Отключение анимации затухания NSView для NSView `setHidden:`
- 23. Выравнивание NSView внутри NSView с использованием VFL
- 24. Как заблокировать события NSView под другим NSView?
- 25. границы iphone 6 экрана дайте мне iphone 5 кадра
- 26. Как удалить IPad в поповер стрелка и его границы кадра
- 27. NSView frame and setContentBorderThickness: forEdge:
- 28. Автоматическое изменение размера NSView
- 29. IBInspectable не оказывающий Слой NSView
- 30. Translucent NSView
Возможный дубликат [Какао: какая разница между рамкой и границами?] (Http://stackoverflow.com/questions/1210047/cocoa-whats-the-difference-between-the-frame-and-the -bounds) – daisy