我是很新的iOS開發,並且我正在使用的UIKit按鈕和雪碧套件爲virtual joystick的應用程序。我的目標是有一個UIImageView的上方顯示的按鈕和操縱桿(更具體地說,MotionJpegImageView)。我用了一個故事創造的按鈕,編程創建一個UIImageView並將其添加爲一個子視圖我的主視圖在我的視圖控制器。遊戲杆是在SKScene子類的獨立文件中創建的。但是,有一個問題。我的UIImageView顯示在按鈕下方(根據需要),但覆蓋了操縱桿。我需要操縱桿在圖像頂部可見。我已經嘗試了sendSubviewToBack方法,但這並沒有實現。我也嘗試過使用zPositions,但那也行不通。有誰知道我可以如何實現我的目標?相關代碼如下。感謝您的期待!的UIKit + SpriteKit - 不能正確層按鈕,節點和圖像視圖
ViewController.m
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
NSURL *url = [NSURL URLWithString:@"http://shibuya.ipcam.jp:60001/nphMotionJpeg?Resolution=320x240&Quality=Standard"];
_imageView = [[MotionJpegImageView alloc] initWithFrame:CGRectMake(self.view.frame.origin.y, self.view.frame.origin.x,
[[UIScreen mainScreen] bounds].size.height,[[UIScreen mainScreen] bounds].size.width)];
_imageView.url = url;
[self.view addSubview:_imageView];
[self.view sendSubviewToBack:_imageView];
[_imageView play];
SKView *spriteView = (SKView *) self.view;
JoystickScene* joystick = [[JoystickScene alloc] initWithSize:CGSizeMake(768,1024)];
[spriteView presentScene: joystick];
[self.view bringSubviewToFront:spriteView];
}
JoystickScene.m
- (void)didMoveToView: (SKView *) view
{
SKSpriteNode *jsThumb = [SKSpriteNode spriteNodeWithImageNamed:@"joystick.png"];
SKSpriteNode *jsBackdrop = [SKSpriteNode spriteNodeWithImageNamed:@"dpad.png"];
joystick = [Joystick joystickWithThumb:jsThumb andBackdrop:jsBackdrop];
joystick.position = CGPointMake(jsBackdrop.size.width, jsBackdrop.size.width);
velocityTick = [CADisplayLink displayLinkWithTarget:self selector:@selector(joystickMovement)];
[velocityTick addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
joystick.zPosition = 1;
[self addChild:joystick];
}
我只使用SpriteKit,因爲我找不到使用UIKit的操縱桿實現。呵呵,謝謝,我會使用的viewDidLoad代替:) – woodenstick
其實,沒關係;我想我找到了一個UIKit的操縱桿的作品:https://github.com/MattFoley/MFLJoystick – woodenstick