2014-12-05 5 views
0

Я пытаюсь повернуть названиеLabel UIButton на 45 градусов. Символом в тексте является «+».Поворот UIButton titleLabel без обрезки

я могу получить титул, чтобы повернуть с

button.titleLabel?.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4))

Но затем один конец символа «+» обрезан, как показано в следующих скриншотах.

enter image description here enter image description here

Я нашел this, но я не мог проследить, как проблема была решена. Странно, что отсеченный участок все еще существует в пределах других концов - он не выступает за пределами «квадрата» символа.

Я также пытался использовать библиотеку Pop's Facebook, какой из них работал, за исключением того, что я не мог понять, как сделать нормальное вращение против часовой стрелки или по часовой стрелке. Я использовал kPOPLayerRotation с M_PI_4, и он сделал что-то неожиданное. Я рад использовать Pop, если кто-то может предоставить образец кода для основного вращения по часовой стрелке/против часовой стрелки.

Возможно, связанная с этим проблема: центр заголовка также перемещается. Есть ли простой способ предотвратить это?

Большое спасибо за помощь.

ответ

0

Для тех, кто подходит к этому в будущем, я в конечном итоге создать новый UIView (синий прямоугольник), который содержал UIButton (белый «+»). Затем я отключил использование взаимодействия в UIButton и добавил распознаватель жестов в UIView. Когда я хотел повернуть «+», я повернул весь UIButton (но не содержащий UIView).

1

Вы поворачиваете кнопку заголовка кнопки, которая находится внутри кнопки. Кнопка не была повернута. но метка была повернута. Таким образом, вы получаете клип или центральную несоосность метки. Я предлагаю вам повернуть кнопку самостоятельно. Таким образом, он также будет вращать свои подпункты.

// Check already it was rotated,transformed...? 
if (CGAffineTransformIsIdentity(button.transform)) { 

    //Yes, Reset to the original position and size. 
    button.transform = CGAffineTransformIdentity; 

} 

//Apply rotation now 
button.transform=CGAffineTransformMakeRotation(M_PI_4); 
+0

Спасибо за помощь. После этого, как я могу сбросить рамку кнопки так, чтобы вращение только titleLabel, а не целая кнопка? Я попытался сделать 'button.bounds = CGRectMake (...)', но это не исправить. – matthewpalmer

+0

просто используйте button.transform = CGAffineTransformIdentity; затем setframe кнопки. –

+0

Я попытался сделать что-то вроде 'button.transform = CGAffineTransformMakeRotation (CGFloat (M_PI_4))' then 'button.transform = CGAffineTransformIdentity', а затем' button.frame = CGRectMake (...) ', однако это не имело никакого эффекта (т. Е. целая кнопка будет вращаться, а затем повернуть назад, но фактическое название кнопки вернется туда, где оно было начато - регулярное «+»). – matthewpalmer

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