2016-06-13 3 views
0

У меня есть uiview, который можно перетащить. В этом UIView у меня есть subview, который я хочу сосредоточить на экране устройства как по высоте, так и по ширине. Но что я пробовал, он сосредотачивает надзор. Как я могу сделать так, что subview всегда находится в центре UIDevice MainScreen, несмотря на то, где находится UIView.Центр UIView в центре MainScreen Несмотря на расположение 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]; 

Добавить моя SuperView. Моя программа немного необычна в том, что это музыкальный виджет для домашнего экрана пользователя (трюк для джейлбрейка), чтобы они могли перемещать его где угодно. Я хочу, чтобы view popArtwork всегда находился в центре экрана, несмотря на то, где бы мог быть Add.

+0

Покажите нам, что вы делали до сих пор –

+0

я не» t, если источник UIView равен 0,0 или 0,5,0,5 . Но это должно быть примерно так: ** CGPoint localCenter = [self.view.superview convertPoint: CGPointZero fromView: [[[UIApplication sharedApplication] delegate] ] window]]; ** –

+0

@UmairAfzal Я добавил то, что я считаю необходимым. – TheHellOTrofasdasd

ответ

0

Я не знаю, если это то, что вы ищете, но его как центр подвид, когда SuperView повторно позиционируется:

- (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; 

} 
Смежные вопросы