/************************************************************
|
* * Hyphenate CONFIDENTIAL
|
* __________________
|
* Copyright (C) 2016 Hyphenate Inc. All rights reserved.
|
*
|
* NOTICE: All information contained herein is, and remains
|
* the property of Hyphenate Inc.
|
* Dissemination of this information or reproduction of this material
|
* is strictly forbidden unless prior written permission is obtained
|
* from Hyphenate Inc.
|
*/
|
|
#import "EaseBubbleView+Voice.h"
|
|
#define ISREAD_VIEW_SIZE 10.f
|
|
@implementation EaseBubbleView (Voice)
|
|
#pragma mark - private
|
|
- (void)_setupVoiceBubbleMarginConstraints
|
{
|
[self.marginConstraints removeAllObjects];
|
|
//image view
|
NSLayoutConstraint *imageWithMarginTopConstraint = [NSLayoutConstraint constraintWithItem:self.voiceImageView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeTop multiplier:1.0 constant:self.margin.top];
|
NSLayoutConstraint *imageWithMarginBottomConstraint = [NSLayoutConstraint constraintWithItem:self.voiceImageView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-self.margin.bottom];
|
[self.marginConstraints addObject:imageWithMarginTopConstraint];
|
[self.marginConstraints addObject:imageWithMarginBottomConstraint];
|
|
//duration label
|
NSLayoutConstraint *durationWithMarginTopConstraint = [NSLayoutConstraint constraintWithItem:self.voiceDurationLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeTop multiplier:1.0 constant:self.margin.top];
|
NSLayoutConstraint *durationWithMarginBottomConstraint = [NSLayoutConstraint constraintWithItem:self.voiceDurationLabel attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-self.margin.bottom];
|
[self.marginConstraints addObject:durationWithMarginTopConstraint];
|
[self.marginConstraints addObject:durationWithMarginBottomConstraint];
|
|
if(self.isSender){
|
NSLayoutConstraint *imageWithMarginRightConstraint = [NSLayoutConstraint constraintWithItem:self.voiceImageView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-self.margin.right];
|
[self.marginConstraints addObject:imageWithMarginRightConstraint];
|
|
NSLayoutConstraint *durationLeftConstraint = [NSLayoutConstraint constraintWithItem:self.voiceDurationLabel attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:self.margin.left];
|
[self.marginConstraints addObject:durationLeftConstraint];
|
}
|
else{
|
NSLayoutConstraint *imageWithMarginLeftConstraint = [NSLayoutConstraint constraintWithItem:self.voiceImageView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:self.margin.left];
|
[self.marginConstraints addObject:imageWithMarginLeftConstraint];
|
|
NSLayoutConstraint *durationRightConstraint = [NSLayoutConstraint constraintWithItem:self.voiceDurationLabel attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-self.margin.right];
|
[self.marginConstraints addObject:durationRightConstraint];
|
|
[self.marginConstraints addObject:[NSLayoutConstraint constraintWithItem:self.isReadView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeRight multiplier:1.0 constant:ISREAD_VIEW_SIZE/2]];
|
[self.marginConstraints addObject:[NSLayoutConstraint constraintWithItem:self.isReadView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-ISREAD_VIEW_SIZE/2]];
|
[self.marginConstraints addObject:[NSLayoutConstraint constraintWithItem:self.isReadView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0]];
|
[self.marginConstraints addObject:[NSLayoutConstraint constraintWithItem:self.isReadView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.backgroundImageView attribute:NSLayoutAttributeTop multiplier:1.0 constant:ISREAD_VIEW_SIZE]];
|
}
|
|
[self addConstraints:self.marginConstraints];
|
}
|
|
- (void)_setupVoiceBubbleConstraints
|
{
|
if (self.isSender) {
|
self.isReadView.hidden = YES;
|
}
|
[self _setupVoiceBubbleMarginConstraints];
|
}
|
|
#pragma mark - public
|
|
- (void)setupVoiceBubbleView
|
{
|
self.voiceImageView = [[UIImageView alloc] init];
|
self.voiceImageView.translatesAutoresizingMaskIntoConstraints = NO;
|
self.voiceImageView.backgroundColor = [UIColor clearColor];
|
self.voiceImageView.animationDuration = 1;
|
[self.backgroundImageView addSubview:self.voiceImageView];
|
|
self.voiceDurationLabel = [[UILabel alloc] init];
|
self.voiceDurationLabel.translatesAutoresizingMaskIntoConstraints = NO;
|
self.voiceDurationLabel.backgroundColor = [UIColor clearColor];
|
[self.backgroundImageView addSubview:self.voiceDurationLabel];
|
|
self.isReadView = [[UIImageView alloc] init];
|
self.isReadView.translatesAutoresizingMaskIntoConstraints = NO;
|
self.isReadView.layer.cornerRadius = ISREAD_VIEW_SIZE/2;
|
self.isReadView.clipsToBounds = YES;
|
self.isReadView.backgroundColor = [UIColor redColor];
|
[self.backgroundImageView addSubview:self.isReadView];
|
|
[self _setupVoiceBubbleConstraints];
|
}
|
|
- (void)updateVoiceMargin:(UIEdgeInsets)margin
|
{
|
if (_margin.top == margin.top && _margin.bottom == margin.bottom && _margin.left == margin.left && _margin.right == margin.right) {
|
return;
|
}
|
_margin = margin;
|
|
[self removeConstraints:self.marginConstraints];
|
[self _setupVoiceBubbleMarginConstraints];
|
}
|
|
@end
|