2015-02-18 3 views
0

я использую UIButton, чтобы отобразить текст в заголовке, иногда текст длинный и я установилUIButton фон не охватывает весь вид

text.TitleLabel.LineBreakMode = UILineBreakMode.WordWrap; 

, когда есть 2 или более линий, фон не имеет достаточную высоту enter image description here

Это мой код для кнопки:

text = new UIButton(); 
     text.Layer.CornerRadius = 5; 
     text.Font = UIFont.FromName ("DIN Condensed", text.Font.PointSize); 

     text.SetTitle (Original._hint, UIControlState.Normal); 
     text.SizeToFit(); 
     text.TitleLabel.LineBreakMode = UILineBreakMode.WordWrap; 

     var rec = new UILongPressGestureRecognizer (() => {  

      text.Frame = new CGRect ((UIApplication.SharedApplication.KeyWindow.Frame.Width/2.0f) - (250/2.0f), 
       this.Superview.Superview.Superview.Frame.Height/2.0f,250, text.Frame.Height); 
      Animate (0.6f,() => { 
       this.Superview.Superview.Superview.AddSubview (text); 
      },() => { 
       text.Layer.ZPosition = int.MaxValue; 
      }); 

      viewToremove=text; 
     }); 


     text.SetTitleColor (UIColor.White, UIControlState.Normal); 
     text.BackgroundColor = UIColor.Black; 

     TargetView.AddGestureRecognizer (rec); 
+0

Я не уверен, но вы проверили, что этот шрифт не является причиной для этого. Проверьте это, изменив шрифт на системный шрифт. – Kampai

+0

Да, шрифт не вызывает проблемы :( – Nininea

+0

Сделайте изображение растяжимым, и я бы не предложил вам добавить распознаватель жестов к кнопке, составить собственный подкласс UIControl или свой собственный элемент UIView. Используйте вставку, чтобы сделать достаточно места для ваш текст – Andrea

ответ

0

Чтобы делает вещи более ясно:

  1. Сделайте strechable изображения, которые можно легко сделать в каталоге изображений активов, показывая, нарезка here, это будет гарантировать, что вы кнопка будет держать один и тот же аспект также в углах
  2. С помощью кнопки вставки, вы можете сделать это в IB Inset Чем бы я не использовал, добавьте распознаватель жестов в UIButton, но я думаю, что он все равно будет работать.
+0

извините, неясно, о каком изображении вы говорите? – Nininea

+0

изображение, которое вы используете в качестве фона – Andrea

+0

это просто цвет, а не изображение: text.BackgroundColor = UIColor.Black; – Nininea

0

Я думаю, что ваша проблема может быть причиной вашего метода .SizeToFit(). Как правило, вы хотите, чтобы метод .SizeToFit() был последней модификацией UIButton или любого другого элемента управления. Это необходимо для предотвращения возникновения проблем с фреймом и неправильного отображения текста. Вероятно, это тоже на фоне UIButton. Итак:

  • Инициализация вашей кнопки (обычно я сохраняю статическую ширину экрана (ширина экрана) и устанавливаю высоту на большое число, например, 200 или что-то еще).
  • Изменить его свойства (включая .Title и .BackgroundColor)
  • Добавить делегат или обработчик событий.
  • Сжимать кнопку используя .SizeToFit();

Сообщите мне, если это будет работать. Удачи!

Любовь и уважение, Бьорна

0

Вы пробовали использовать 9patch вытяжку в качестве фонового изображения? Они разработаны специально для ситуаций, когда вы не уверены в длине содержимого и требуете, чтобы ваше фоновое изображение растягивалось/сжималось до соответствия. Больше информации here

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