Сегодня один из моих коллег пришел ко мне с проблемой того, как он может загрузить или просмотреть или поменять documentView
на NSScrollView
так, чтобы загруженный вид был зафиксирован в верхнем левом углу вместо нижний угол.
Он потратил некоторое время на поиски в Интернете и колебался, и у него не было решения, несмотря на то, что он читал документацию в Apple, в StackOverflow и в других местах.
Вот вопрос по частям:
В Интерфейсном Разработчике перетащите NSScrollView
в проект.
Также в Interface Builder перетащите два пользовательских представления в проект и добавьте несколько текстовых полей, кнопок и т. Д.
Создайте класс контроллера (например, myController) со следующими IBOutlet
s:
IBOutlet NSScrollView * myScrollView
IBOutlet NSView * myCustomView1
IBOutlet NSView * myCustomView2
Подключите розетки к элементам управления в Интерфейсном Разработчике.
Создать подкласс NSView
, чтобы перевернуть documentView
:
@implementation myFlippedView
-(id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
-(void)drawRect:(NSRect)dirtyRect {
// Drawing code here.
}
-(BOOL)isFlipped {
return YES;
}
Выберите documentView
из NSScrollView
в Интерфейсном Разработчике и сделайте его подклассом myFlippedView
. В Интерфейсном Разработчике вы должны выбрать NSScrollView и затем щелкнуть по нему еще раз, чтобы перейти к documentView
, или изменить библиотеку IB, чтобы показать древовидное представление, и выбрать дочернее настраиваемое представление NSScrollView
.
В классе myController
поменяйте местами представления следующими методами:
-(void)awakeFromNib {
[myScrollView setDocumentView:myCustomView1];
}
-(IBAction)swapViews:(id)sender {
if ([myScrollView documentView] == myCustomView1) {
[myScrollView setDocumentView:myCustomView2];
} else {
[myScrollView setDocumentView:myCustomView1];
}
}
Наконец подключите кнопку в вашем проекте к действию swapViews
, соберите и запустите.
Проблема в том, что координаты не были разрешены, как ожидалось с помощью isFlipped.