2016-10-17 7 views
1

Я пытаюсь найти опцию автозапуска в UILabel с учетом верхнего ограничения.NSLabel Autoshrink с верхними ограничениями

У меня есть UIView и три ярлыка. У одного из них есть опция автозапуска. Он имеет ограничение на центрирование и имеет ограничение Trailing и Top, которое должно сжимать ярлык при изменении размера UIView. Если я сделаю UIVIew тоньше, размер шрифта будет уменьшен, но если я изменю высоту шрифта UIView, это не будет изменено.

Ограничение на UILabels:

  • Align Center X в SuperView
  • Align Center Y в SuperView
  • Трейлинг пространства для SuperView> = 50
  • верхнего пространства для SuperView> = 40
  • Выровнять центр X до метки2
  • Вверх Пространство для метки1: 15
  • Нижнего пространства Label2 равно: 3

Метка 1 ограничение:

  • По центру х до SuperView
  • замыкающего пробела, чтобы SuperView> = 10
  • Leading пространства для SuperView> = 10
  • Дно Площадь до Термоусадочная этикетка равна 15

Этикетка 2 const raint:

  • Align Center X в термоусадочной этикетки
  • Top Space для термоусадочной этикетки равна 3

Как это изменить?

Что я хочу, на последнем изображении это ярлык будет приятным автосбрасыванием. Поэтому, если я изменяю ширину или высоту метки UIView, она должна уменьшаться.

Normal size

Width change

Height change

+0

Можете ли вы объяснить это больше. –

+0

уверен, что вам нужно знать. –

+0

Вы хотите, чтобы смена термоусадочной этикетки соответствовала виду? –

ответ

2

плз выбрать набор ваш ярлык Shrink

Количество линий 0

Line Breaks: Клип

Autoshrink: Minimum Font Scale 0.25 enter image description here

+0

Это работает, .. можете ли вы указать причины, почему необходимо установить количество строк 0 и разбить строку на клип, ... –

+0

Если вы установите строку 1, то высота ярлыка не изменится динамически, поэтому вам нужно установить ее с 0. и в разрыве линии вы можете использовать также TurnCate head, tail, mid. –

+0

Для ярлыка Динамическая высота вы можете увидеть эту ссылку http://stackoverflow.com/questions/39410796/uiview-dynamic-height-depending-on-label-height/39411166#39411166 –

1

Я надеюсь, что ниже код поможет вам в некотором роде,

extension Double { 
    /// Returns propotional width according to device width 
    var propotional: CGFloat { 
     if UIDevice.current.userInterfaceIdiom == .pad { 
      return CGFloat(414.0)/CGFloat(375.0) * CGFloat(self) 
     } 
     return CGFloat(Screen.width)/CGFloat(375.0) * CGFloat(self) 
    } 
} 



extension UILabel { 
     /// This property is change font-size of Label's text propotionaly, if assigned `On` from Interface builder 
     @IBInspectable 
     var isPropotional: Bool{ 
      get { 
       return true 
      } 

     set { 
       if newValue == true { 
        let fontSize = Double((self.font!.pointSize)) 
        self.font = UIFont(name: self.font!.fontName, size: fontSize.propotional) 
      } 
     } 
    } 
} 

В продолжении распашной Пропорциональности значения вычисляются с учетом текущего устройства, установленным в раскадровке, как iPhone 6 размера.

enter image description here
После добавления этого набора коды on от интерфейса строителя для этикетки, где вы можете увидеть isPropotional атрибута в закладке атрибутов инспектора. Пожалуйста, обратитесь к изображению.