2

Я использую zBAR QR Reader в приложении для iPad, которое я создаю, и я добавил настраиваемый перекрестие наложения на ZBarReaderViewController. Мне удалось получить накладку в центр, однако, когда устройство вращается, наложение, очевидно, выходит из центра.Constrain cameraOverlayView to center of screen

У меня был поиск вокруг программного ограничения вида, но ни одно из предложений не сработало. Я пробовал все возможные комбинации с UIViewAutoResizingMask, и я пробовал кучи разных настроек с помощью метода [NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:].

Вот мой код:

self.readerqr = [ZBarReaderViewController new]; 

int readerPointX = ((self.view.bounds.origin.x) + (self.view.bounds.size.width/2.0)); 
int readerPointY = ((self.view.bounds.origin.y) + (self.view.bounds.size.height/2.0) -60); 

self.readerqr.readerDelegate = self; 
self.readerqr.showsHelpOnFail = NO; 

CGRect viewFrame = CGRectMake(readerPointX, readerPointY, 200, 200); 

self.crossHair = [[UIImageView alloc] initWithFrame:viewFrame]; 

self.crossHair.image = [UIImage imageNamed:@"qr.png"]; 

[self.readerqr setCameraOverlayView:self.crossHair]; 

constraint = [NSLayoutConstraint constraintWithItem:self.crossHair 
              attribute:NSLayoutAttributeHeight 
              relatedBy:NSLayoutRelationEqual 
              toItem:nil 
              attribute:NSLayoutAttributeNotAnAttribute 
             multiplier:1 
              constant:200]; 

[self.crossHair addConstraint:constraint]; 

constraint = [NSLayoutConstraint constraintWithItem:self.crossHair 
              attribute:NSLayoutAttributeWidth 
              relatedBy:NSLayoutRelationEqual 
              toItem:nil 
              attribute:NSLayoutAttributeNotAnAttribute 
             multiplier:1 
              constant:200]; 
[self.crossHair addConstraint: constraint]; 

Что такое правильный способ установить это так, мое наложение всегда будет находиться в центре экрана, независимо от изменения ориентации? Спасибо, спасибо.

ответ

0

Этот вопрос может быть неактуальен больше, но все же надеюсь, что этот код поможет кому-то. Прежде всего, при использовании автозапуска вам не нужно иметь дело с фреймами. Во-вторых, используйте этот код

self.readerqr = [ZBarReaderViewController new]; 

self.readerqr.readerDelegate = self; 
self.readerqr.showsHelpOnFail = NO; 

self.crossHair = [[UIImageView alloc] init]; 
self.crossHair.translatesAutoresizingMaskIntoConstraints = NO; 
self.crossHair.image = [UIImage imageNamed:@"qr.png"]; 

[self.readerqr setCameraOverlayView:self.crossHair]; 

[self.readerqr addConstraint:[NSLayoutConstraint constraintWithItem:self.crossHair 
                  attribute:NSLayoutAttributeHeight 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:nil 
                  attribute:NSLayoutAttributeNotAnAttribute 
                 multiplier:1 
                  constant:200]]; 

[self.readerqr addConstraint: [NSLayoutConstraint constraintWithItem:self.crossHair 
                  attribute:NSLayoutAttributeWidth 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:nil 
                  attribute:NSLayoutAttributeNotAnAttribute 
                  multiplier:1 
                  constant:200]]; 

[self.readerqr addConstraint:[NSLayoutConstraint constraintWithItem:self.crossHair 
                  attribute:NSLayoutAttributeCenterX 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:self.readerqr 
                  attribute:NSLayoutAttributeCenterX 
                 multiplier:1 
                  constant:0]]; 
[self.readerqr addConstraint:[NSLayoutConstraint constraintWithItem:self.crossHair 
                  attribute:NSLayoutAttributeCenterY 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:self.readerqr 
                  attribute:NSLayoutAttributeCenterY 
                 multiplier:1 
                  constant:0]]; 

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

  • Нет связанных вопросов^_^