UILabel с UIButton, как свечение при касании

У меня есть динамически созданный список меток, и я использую GestureRecognizer для каждой метки, чтобы обнаруживать касания / щелкать по ним. Я не мог использовать UIButton, так как хотел передать обработчику событий касания текст, уникальный для каждой метки, а UIButton не позволял передавать текст как userinfo. Я не могу использовать UIButton.tag для передачи дополнительной информации.

Теперь мне нужен UIButton эффект свечения при прикосновении к моему UIlabel. Если есть другие способы уведомить пользователя о прикосновении к метке, это тоже сработает. Я также не думал об использовании какой-нибудь быстрой анимации или эффекта покачивания. Есть идеи или обходные пути?

Заранее спасибо.


person apy    schedule 17.10.2011    source источник


Ответы (2)


Почему бы вам не создавать кнопки программно и не настраивать тип кнопки. Вот так -

UIButton *sampleButton = [UIButton buttonWithType:UIButtonTypeCustom];
[sampleButton setBackgroundImage:[[UIImage imageNamed:@"redButton.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
[sampleButton setTitle:@"My Button"];
[sampleButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:sampleButton];

Здесь мы определили, как должна выглядеть кнопка UIControlStateNormal. Вы можете определить, как он должен выглядеть для UIControlStateHighlighted.

Я хочу сказать, что с помощью uibuttons вы можете получить то, что вам нужно. Не нужно использовать uilabels.

person Srikar Appalaraju    schedule 17.10.2011
comment
Я использовал UIButton вместо UILabel. Поскольку я не мог передать дополнительный параметр с сообщением addTarget для UIButton, теперь я поддерживаю карту UIButton.tag с дополнительной информацией, которая мне нужна при нажатии кнопки. Кажется, сейчас работает, и я могу использовать все функции UIButton. - person apy; 17.10.2011
comment
хорошо, но если вы хотите, чтобы uilabel вел себя как uibutton. тогда лучше использовать uibutton! В любом случае, пока это работает ... Рад, что смог поделиться тем, что знал ... - person Srikar Appalaraju; 17.10.2011

Swift 4

1- Создать расширение UIView с анимацией

2- Используйте его в текстовых полях, кнопках, представлениях (любой подкласс UIView)

Расширение UIView

import UIKit

extension UIView{
    enum GlowEffect:Float{
        case small = 0.4, normal = 1, big = 5
    }

    func doGlowAnimation(withColor color:UIColor, withEffect effect:GlowEffect = .normal) {
        layer.masksToBounds = false
        layer.shadowColor = color.cgColor
        layer.shadowRadius = 0
        layer.shadowOpacity = effect.rawValue
        layer.shadowOffset = .zero

        let glowAnimation = CABasicAnimation(keyPath: "shadowRadius")
        glowAnimation.fromValue = 0
        glowAnimation.toValue = 1
        glowAnimation.beginTime = CACurrentMediaTime()+0.3
        glowAnimation.duration = CFTimeInterval(0.3)
        glowAnimation.fillMode = kCAFillModeRemoved
        glowAnimation.autoreverses = true
        glowAnimation.isRemovedOnCompletion = true
        layer.add(glowAnimation, forKey: "shadowGlowingAnimation")
    }
}

Как это использовать:

//Button
button.doGlowAnimation(withColor: UIColor.red, withEffect: .big)
person alegelos    schedule 06.06.2018