как оживить UIBarButtonItem - PullRequest
       1

как оживить UIBarButtonItem

3 голосов
/ 22 сентября 2011

Я хочу анимировать UIBarButtonItem, как в примере с проектом TheElements. Я почти уверен, что должен использовать свойство customView, но я не хочу использовать изображение, чтобы сделать это, потому что мне нужно изменить заголовки с помощью некоторых локализованных строк (многоязычность) Так можно ли создать UIButton, который выглядит как UIBarButtonItem?

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Вот код.

NSArray *images = [NSArray arrayWithObjects:
        [UIImage imageNamed:@"image0.png"],
        [UIImage imageNamed:@"image1.png"],
        nil];

imageView = [[UIImageView alloc] initWithImage:[UIImage  imageNamed:@"image0.png"]];
imageView.animationImages = images;

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = self.imageView.bounds;
[button addSubview:self.imageView];
[button addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem * barButton = [[[UIBarButtonItem alloc] initWithCustomView: button] autorelease];

Некоторые вещи, на которые следует обратить внимание:

UIButton имеет нулевую область, так как не имеет границ, установленных при инициализации, таким образом, границыинициализируются границами UIImageView (у которого его границы инициализированы из изображения).

UIButton обрабатывает действие / цель для события касания.Действие / цель UIBarButtonItem не установлены.

Для анимации:

[imageView startAnimating];
0 голосов
/ 12 июня 2017

для Swift-3.x Создайте IBOutlet из UIBarButtonItem и внедрите didSet следующим образом

@IBOutlet weak var leftMenuBtn: UIBarButtonItem! {
        didSet {
            let icon = UIImage(named: "myCustomIcon")
            let iconSize = CGRect(origin: .zero, size: icon!.size)
            let iconButton = UIButton(frame: iconSize)
            iconButton.setBackgroundImage(icon, for: .normal)
            leftMenuBtn.customView = iconButton

            iconButton.addTarget(self, action:#selector(leftMenuClicked(_:)), for: .touchUpInside)
        }
    }

Затем реализуйте метод выбора для созданной выше левой кнопки меню

func leftMenuClicked(_ sender: Any) {
    /* Following is the code to animate ButtonView by rotation of 90 degrees,
 just replace with your own custom animation. */

    var transform = CGAffineTransform(rotationAngle: CGFloat(M_PI_2))
    UIView.animate(withDuration: 0.5) {
        self.leftMenuBtn.customView!.transform = transform
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...