2016-06-13 8 views
0

私はドラッグすることができるuiviewを持っています。そのUIViewでは、私はデバイスの画面上に高さと幅の両方を中心にしたいサブビューを持っています。しかし、これまでに試したことは、スーパービューを中心にしています。 UIViewがどこにあっても、サブビューが常にUIDevice MainScreenの中心にあるようにするにはどうすればいいですか?メインUIの中心にあるUIView Superviewの場所にもかかわらず

私は(その50000行の長ので、ストリップダウン)があります。

popArtwork = [UIImageView new]; 
    popArtwork.frame = CGRectMake(367, 367, WidgetWidth, WidgetWidth/5.3); 

    popArtwork.layer.cornerRadius = 10; 
    popArtwork.layer.masksToBounds = YES; 
    popArtwork.alpha = 0; 
    [popArtwork setUserInteractionEnabled:YES]; 
    [add addSubview:popArtwork]; 

の追加は、私のスーパービューです。私のプログラムは、ユーザのホーム画面の音楽ウィジェット(脱獄)をする方法で少し珍しいので、いつでもどこでも移動することができます。 Addの可能性があるにもかかわらず、常に画面の中央に表示するpopArtworkを望みます。

+0

あなたは「これまで –

+0

、私はドン何をしている私たちを表示しますUIViewの起点が0,0または0.5,0.5であるかどうかを覚えておいてください。 ** CGPoint localCenter = [self.view.superview convertPoint:CGPointZero fromView:[[[UIApplication sharedApplication] delegate ] window]]; ** –

+0

@UmairAfzal私は必要と思うものを追加しました。 – TheHellOTrofasdasd

答えて

0

私はそれはあなたが探しているものかどうかわからないが、スーパービューが再配置されたときにサブビューを中心にその方法:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(paned:)]; 
    [_add addGestureRecognizer:pan]; 

} 


-(void)paned:(UIPanGestureRecognizer *)pan{ 

    CGPoint translatedPoint = [(UIPanGestureRecognizer*)pan translationInView:self.view]; 

    if ([(UIPanGestureRecognizer*)pan state] == UIGestureRecognizerStateBegan) { 
     firstX = [[pan view] center].x; 
     firstY = [[pan view] center].y; 
    } 

    translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y); 

    [[pan view] setCenter:translatedPoint]; 


    CGRect newSubviewFrame = _subview.frame; 
    newSubviewFrame.origin.x = [UIScreen mainScreen].bounds.size.width/2.0 - newSubviewFrame.size.width/2.0 - _add.frame.origin.x; 
    newSubviewFrame.origin.y = [UIScreen mainScreen].bounds.size.height/2.0 - newSubviewFrame.size.height/2.0 - _add.frame.origin.y; 
    _subview.frame = newSubviewFrame; 

} 
関連する問題