New file |
| | |
| | | /************************************************************ |
| | | * * 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 |