Как это исправить, чтобы моя текстовая метка не обрезалась сверху при программном добавлении текстовой метки? - PullRequest
0 голосов
/ 19 февраля 2020

Я добавил label программно, и он отлично работает, за исключением того, что локальные символы, такие как å, ä, ö, обрезаются сверху. Это верно, даже если я изменю _nothingToShow.lineBreakMode = NSLineBreakByClipping; на NSLineBreakByCharWrapping.

. Я настроил метку следующим образом:

-(void)setupNoOldExcursionsView {
    _myView = [[UIView alloc] initWithFrame:self.view.frame];
    _myView.backgroundColor = [UIColor whiteColor];
    [self.view addSubview: _myView];

    [self.view bringSubviewToFront: _myView];

    if (@available(iOS 11.0, *)) {
        _nothingToShow = [[UILabel alloc] init];

        [self generalLabelSetUp];

        _myView.translatesAutoresizingMaskIntoConstraints = NO;
        _nothingToShow.translatesAutoresizingMaskIntoConstraints = NO;

        UILayoutGuide *g = self.view.safeAreaLayoutGuide;

        [NSLayoutConstraint activateConstraints:@[
               [_myView.topAnchor constraintEqualToAnchor:g.topAnchor constant:0.0],
               [_myView.bottomAnchor constraintEqualToAnchor:g.bottomAnchor constant:0.0],
               [_myView.leadingAnchor constraintEqualToAnchor:g.leadingAnchor constant:0.0],
               [_myView.trailingAnchor constraintEqualToAnchor:g.trailingAnchor constant:0.0],

               [_nothingToShow.centerXAnchor constraintEqualToAnchor: _myView.centerXAnchor],
               [_nothingToShow.centerYAnchor constraintEqualToAnchor: _myView.centerYAnchor],
               [_nothingToShow.leadingAnchor constraintEqualToAnchor: _myView.leadingAnchor constant:0],
               [_nothingToShow.trailingAnchor constraintEqualToAnchor: _myView.trailingAnchor constant:0]
           ]];
    }
}

и настроил label:

-(void)generalLabelSetUp {
      _nothingToShow.text = NSLocalizedString(@"NoExcursions", @"");
      _nothingToShow.textColor = [UIColor blackColor];
      _nothingToShow.textAlignment = NSTextAlignmentCenter;
      [_nothingToShow setNumberOfLines: 0];
//      _nothingToShow.lineBreakMode = NSLineBreakByClipping;
        _nothingToShow.lineBreakMode = NSLineBreakByCharWrapping;

      [_nothingToShow setCenter: CGPointMake(_noOldExcursions.center.x, _noOldExcursions.center.y - 40)];

      _nothingToShow.font = [UIFont apolloNoExperiences];
      _nothingToShow.textColor = [UIColor apolloBlueColor];

      [_noOldExcursions addSubview:_nothingToShow];
  }

Как мне убедиться, что текст не обрезан? Я как-то устанавливаю высоту label? Или уменьшить текст, чтобы он соответствовал метке?

1 Ответ

1 голос
/ 19 февраля 2020

Попробуйте добавить значение константы верхнего и нижнего ограничения, например:

   [_myView.topAnchor constraintEqualToAnchor:g.topAnchor constant:10.0],
   [_myView.bottomAnchor constraintEqualToAnchor:g.bottomAnchor constant: -10.0],

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

...