2015-01-12 1 views
0

Я хочу вертикально выровнять текст метки в живом коде, как выравнивание по верхней, средней или нижней части.Вертикальное выравнивание в Livecode

---------------------------------- 
    |   top text    | 
    |         | 
    |         | 
    --------------------------------- 

    --------------------------------- 
    |         | 
    |   middle text   | 
    |         | 
    --------------------------------- 

    --------------------------------- 
    |         | 
    |         | 
    |   bottom text   | 
    --------------------------------- 

Есть ли способ сделать это? Если нет, есть ли альтернативный способ сделать это?

ответ

0

К сожалению, нет никакого выбора в окне свойств, но вы можете сделать это с помощью простого скрипта, как

set the topMargin of field theField to (round(((the height of field theField - the formattedHeight of field theField)/2)) + the topMargin of field theField) 

Пример для верхнего края

Update: Самый простой пример для верхнего края:

set the topMargin of field theField to 0 

, а затем отрегулируйте 0 до любого значения, которое вы хотите от вершины, например размер шрифта или около того.

для середины я хотел бы использовать что-то вроде

set the topMargin of field theField to (the height of field theField/2) 

и, возможно, изменить это факторинг размера шрифта в тоже.

+0

Я пробовал свой код. Текст отображается на уровне, как я могу сделать его центрированным/верхним? – Mai

+0

Это сработало, но текст фактически не центрирован. Я отредактировал ваши предложения и попробовал это «установить topMargin поля theField (высота поля theField/2) - (текстовое поле поля theField/2)'. В верхнем выравнивании он отображает только половину текста. – Mai

1

Нет встроенного способа автоматического позиционирования текста метки, как вы описываете. Однако, если вам не нужны свойства форматирования текста для поля, использование кнопки в качестве метки может лучше удовлетворить ваши потребности из-за возможности по умолчанию автоматически центрировать текст по вертикали.

Что-то вроде следующего должно помочь вам в большей части пути. Вы можете вставить скрипт прямо в кнопку и отправить «updateMyTextAlignment < значение >» на кнопку со значением «верх», «средний» или «снизу». Но предполагая, что у вас будет несколько пользовательских ярлыков в вашем стеке, лучшим вариантом было бы применить следующее как поведение ко всем вашим кнопкам ярлыков.

command updateMyTextAlignment pValue 
    put effective textSize of me into TS 
    put effective textHeight of me into TH 
    switch pValue 
     case "top" 
     set topMargin of me to -(height of me) + TS + TH 
     break 
     case "middle" 
     set topMargin of me to 0 -- may need to adjust this amount 
     break 
     case "bottom" 
     set topMargin of me to height of me - TS - TH 
    end switch 
end updateMyTextAlignment 
+0

Я пробовал ваш код, но у меня есть ошибка, 'Объект: не могу установить это свойство Я положил этот скрипт на кнопку' updateMyTextAlignment "top" ' Ошибка в' set topMargin of me to - (height от меня) + TS + TH' Это также происходит, когда я выбираю средний и нижний. – Mai

+0

Только что протестирован в 6.7 и 7.0, и код отлично работает в обеих версиях, используя updateMyTextAlignment «top», как вы писали. Если вы скопируете скрипт прямо здесь, он должен работать, а не переименовывать его. –