2014-11-18 5 views
0

Так что это очень странно:NSLocalization + раскадровки с помощью Swift

Я создал небольшой UIView в раскадровке, изменил свой цвет, чтобы мы могли видеть его. Я также создал кнопку, чтобы я мог сделать этот вид больше.

Что происходит, это работает только в том случае, если я не получаю доступ к NSLocalizedString. Если я разлагаю строку, она перестает работать.

Почему это?

class MasterViewController: UIViewController { 

    @IBOutlet weak var bar: UIView! 
    @IBOutlet weak var button: UIButton! 

    var integer : Int = 0 

    @IBAction func makeBarGrow(sender : AnyObject) { 
     self.integer++ 
     //self.button.setTitle(NSLocalizedString("test \(integer)", comment : "test"), forState:UIControlState.Normal) 
     self.bar.frame = CGRectMake(self.bar.frame.origin.x, 
      self.bar.frame.origin.y, 
      self.bar.frame.size.width + 10, 
      self.bar.frame.size.height) 
    } 
} 

Спасибо

+0

Я инкрементирую целое число, поэтому он каждый раз обращается к NSLocalizedString. В противном случае он будет работать со второго раза на – Lucas

+0

, что вы подразумеваете под «перестает работать»? –

+0

@BryanChen я имел в виду, что код выше работает (меняет рамку self.bar), если я не раскомментирую строку – Lucas

ответ

1

Когда вы установите метку на кнопке, Auto Layout работает и устанавливает рамку вашего бара обратно к своему первоначальному значению. Если включена автоматическая компоновка, вам не следует настраивать размеры рамки. Вместо этого вы должны использовать ограничения по размеру следующим образом:

  1. Добавить ограничение автоматической компоновки на панели, которое устанавливает его ширину. Для этого выберите вид панели в поле Interface Builder и щелкните значок Auto Layout Pin | - [] - |, щелкните поле рядом с Ширина и установите константу в нужное начальное значение. Затем нажмите Добавить 1 Ограничение внизу.

  2. Добавить IBOutlet на это ограничение в вашем ViewController по Control тащит с ограничением в макете документа в Просмотр к коду:

    @IBOutlet weak var barWidth: NSLayoutConstraint! 
    
  3. В makeBarGrow заменить frame корректировки код:

    barWidth.constant += 10 
    
+0

Спасибо, что это работает! Вы знаете, почему? – Lucas

+0

Автоматическая компоновка выполняется, когда вы обновляете метку на своей кнопке и устанавливаете свой кадр обратно по умолчанию. Когда включена автоматическая компоновка, вы не должны устанавливать или настраивать рамки, вы должны установить ограничения по ширине, как показано выше. Я был бы рад, если бы вы были так склонны. Благодарю. – vacawama

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