You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.0 KiB
120 lines
4.0 KiB
// |
|
// XHAlbumOperationView.m |
|
// MessageDisplayKitWeChatExample |
|
// |
|
// Created by Jack_iMac on 15/2/9. |
|
// Copyright (c) 2015年 iOS软件开发工程师 曾宪华 热衷于简洁的UI QQ:543413507 http://www.pailixiu.com/blog http://www.pailixiu.com/Jack/personal. All rights reserved. |
|
// |
|
|
|
#import "XHAlbumOperationView.h" |
|
|
|
#define kXHALbumOperationViewSize CGSizeMake(120, 34) |
|
#define kXHAlbumSpatorY 5 |
|
|
|
@interface XHAlbumOperationView () |
|
|
|
@property (nonatomic, strong) UIButton *replyButton; |
|
@property (nonatomic, strong) UIButton *likeButton; |
|
|
|
@property (nonatomic, assign) CGRect targetRect; |
|
|
|
@end |
|
|
|
@implementation XHAlbumOperationView |
|
|
|
+ (instancetype)initailzerAlbumOperationView { |
|
XHAlbumOperationView *operationView = [[XHAlbumOperationView alloc] initWithFrame:CGRectZero]; |
|
return operationView; |
|
} |
|
|
|
- (instancetype)initWithFrame:(CGRect)frame { |
|
self = [super initWithFrame:frame]; |
|
if (self) { |
|
self.backgroundColor = [UIColor colorWithWhite:0.000 alpha:0.800]; |
|
self.layer.masksToBounds = YES; |
|
self.layer.cornerRadius = 5.0; |
|
[self addSubview:self.replyButton]; |
|
[self addSubview:self.likeButton]; |
|
} |
|
return self; |
|
} |
|
|
|
#pragma mark - Action |
|
|
|
- (void)operationDidClicked:(UIButton *)sender { |
|
[self dismiss]; |
|
if (self.didSelectedOperationCompletion) { |
|
self.didSelectedOperationCompletion(sender.tag); |
|
} |
|
} |
|
|
|
#pragma mark - Propertys |
|
|
|
- (UIButton *)replyButton { |
|
if (!_replyButton) { |
|
_replyButton = [UIButton buttonWithType:UIButtonTypeCustom]; |
|
_replyButton.tag = 0; |
|
[_replyButton addTarget:self action:@selector(operationDidClicked:) forControlEvents:UIControlEventTouchUpInside]; |
|
_replyButton.frame = CGRectMake(0, 0, kXHALbumOperationViewSize.width / 2.0, kXHALbumOperationViewSize.height); |
|
[_replyButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; |
|
_replyButton.titleLabel.font = [UIFont systemFontOfSize:14]; |
|
} |
|
return _replyButton; |
|
} |
|
|
|
- (UIButton *)likeButton { |
|
if (!_likeButton) { |
|
_likeButton = [UIButton buttonWithType:UIButtonTypeCustom]; |
|
_likeButton.tag = 1; |
|
[_likeButton addTarget:self action:@selector(operationDidClicked:) forControlEvents:UIControlEventTouchUpInside]; |
|
_likeButton.frame = CGRectMake(CGRectGetMaxX(_replyButton.frame), 0, CGRectGetWidth(_replyButton.bounds), CGRectGetHeight(_replyButton.bounds)); |
|
[_likeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; |
|
_likeButton.titleLabel.font = [UIFont systemFontOfSize:14]; |
|
} |
|
return _likeButton; |
|
} |
|
|
|
#pragma mark - 公开方法 |
|
|
|
- (void)showAtView:(UIView *)containerView rect:(CGRect)targetRect { |
|
self.targetRect = targetRect; |
|
if (self.shouldShowed) { |
|
return; |
|
} |
|
|
|
[containerView addSubview:self]; |
|
|
|
CGFloat width = kXHALbumOperationViewSize.width; |
|
CGFloat height = kXHALbumOperationViewSize.height; |
|
|
|
self.frame = CGRectMake(targetRect.origin.x, targetRect.origin.y - kXHAlbumSpatorY, 0, height); |
|
self.shouldShowed = YES; |
|
|
|
[UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{ |
|
self.frame = CGRectMake(targetRect.origin.x - width, targetRect.origin.y - kXHAlbumSpatorY, width, height); |
|
} completion:^(BOOL finished) { |
|
[_replyButton setTitle:@"评论" forState:UIControlStateNormal]; |
|
[_likeButton setTitle:@"赞" forState:UIControlStateNormal]; |
|
}]; |
|
} |
|
|
|
- (void)dismiss { |
|
if (!self.shouldShowed) { |
|
return; |
|
} |
|
|
|
self.shouldShowed = NO; |
|
|
|
[UIView animateWithDuration:0.25f animations:^{ |
|
[_replyButton setTitle:nil forState:UIControlStateNormal]; |
|
[_likeButton setTitle:nil forState:UIControlStateNormal]; |
|
CGFloat height = kXHALbumOperationViewSize.height; |
|
self.frame = CGRectMake(self.targetRect.origin.x, self.targetRect.origin.y - kXHAlbumSpatorY, 0, height); |
|
} completion:^(BOOL finished) { |
|
|
|
[self removeFromSuperview]; |
|
|
|
}]; |
|
} |
|
|
|
@end
|
|
|