Мне нужно реплицировать функцию bringSubviewToFront: на iPhone, но я программирую на Mac. Как это может быть сделано?OS X версия bringSubviewToFront :?
ответ
Не на самом деле попытался это - и может быть лучший способ сделать это - но это должно работать:
NSView* superview = [view superview];
[view removeFromSuperview];
[superview addSubview:view];
Это переместит «вид» на фронт своих братьев и сестер
Представления Sibling, которые перекрываются, могут быть трудными для работы в AppKit - он был полностью неподдерживаемым в течение длительного времени. Подумайте о том, чтобы сделать их CALayers. В качестве бонуса вы можете повторно использовать этот код в своей версии iOS.
также убедитесь, что для того, чтобы слой для кварцевого рендеринга:
...
NSImageView *anImage = [[NSImageView alloc] initWithFrame:NSRectMake(0,0,512,512)];
[anImageView setWantsLayer:YES];
...
в противном случае, ваш слой не может быть правильно оказан.
Ответ Pete Rossi работает, но не забудьте сохранить вид, когда вы удалите его из супервизора.
Вы можете добавить это в категории на NSView:
-(void)bringSubviewToFront:(NSView*)view
{
[view retain];
[view removeFromSuperview];
[self addSubview:view];
[view release];
}
ответ Пита Росси не работает для меня, потому что мне нужно, чтобы вытолкнуть вид на фронт при перемещении его с помощью мыши. Однако, по той же схеме следующие делали работу, не убивая мышь:
CALayer* superlayer = [[view layer] superlayer];
[[view layer] removeFromSuperlayer];
[superlayer addSublayer:[view layer]];
Кроме того, следующие помещают в подклассе NSView или категории очень удобно:
- (void) bringToFront {
CALayer* superlayer = [[self layer] superlayer];
[[self layer] removeFromSuperlayer];
[superlayer addSublayer:[self layer]];
}
Отлично! Только то, что мне нужно, спасибо. –
Это Swift 3,0 Решение:
extension NSView {
public func bringToFront() {
let superlayer = self.layer?.superlayer
self.layer?.removeFromSuperlayer()
superlayer?.addSublayer(self.layer!)
}
}
- 1. OS X Mountain Lion Java версия
- 2. java-версия и PATH на OS X
- 3. Mac OS X версия Texture2D.m, .h доступна?
- 4. версия python не обновляется на OS X
- 5. Mac OS X libcurl dylib совместимость версия
- 6. Какая версия Ruby включена в OS X?
- 7. Напротив bringSubviewToFront?
- 8. UIPanGestureRecognizer и BringSubviewToFront
- 9. bringSubviewToFront (_ :) функция разрывает UIPanGestureRecognizer
- 10. Бета-версия Android OS
- 11. Blackberry OS версия limit
- 12. Какая версия OS X должна моя целевая программа?
- 13. СВН - неправильная версия для Qt Creator на OS X
- 14. Это правильная версия Vim для OS X Snow Leopard?
- 15. Версия приложения Xcode несовместима с версией Mac OS X
- 16. Какая версия apache ant совместима с OS X 10.7.5?
- 17. Unsupported версия major.minor на Mac OS X El Capitan
- 18. После новой установки сохраняется прежняя версия SQLite3 (OS X)
- 19. Новая версия Ruby on Rails на Mac OS X 10.7.3
- 20. Pyraf здание неправильно версия GCC на OS X
- 21. Мини-версия Espresso Logic для Mac OS X
- 22. Невозможно использовать // флаг TODO в MonoDevelop (версия OS X)
- 23. Mac OS X (последняя версия) - cant find .screenrc
- 24. Open GL версия 2.1 вместо 3.2 на OS X 10.8
- 25. Какая версия XCode поддерживается на Mac OS X Leopard 10.5.2?
- 26. Не удается установить докер на OS X Версия 10.9.5
- 27. GLSL версия 130 на Mac OS X вызывает ошибку
- 28. Текущая версия документации «Использование mod_ssl в Mac OS X»?
- 29. Эта версия Xcode не может использоваться с OS X Server
- 30. Dylibs and OS X
Возможно, неэффективно, но он выполняет то, что я хотел, поэтому спасибо. – Regan
Возможно, стоит попробовать использовать метод 'setSubviews:'. – ArtOfWarfare