ответ

0

поздно ответ ...

, если вы хотите уменьшить inputToolbar, вам необходимо создать подкласс JSQMessagesToolbarContentView и предоставить вам собственное представление для содержимого панели инструментов.

ниже я привожу образец пример, создать subcalss из JSQMessagesToolbarContentView назвать его как JSQMessagesToolbarContentView_custom в subcalss добавить ниже код,

#import "JSQMessagesToolbarContentView.h" 

@interface JSQMessagesToolbarContentView_custom : JSQMessagesToolbarContentView 
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *holderViewLeadingConstraint; 
@end 

и в JSQMessagesToolbarContentView_custom.m файле,

#import "UIView+JSQMessages.h" 
#import "JSQMessagesToolbarContentView_custom.h" 

@implementation JSQMessagesToolbarContentView_custom 

+ (UINib *)nib 
{ 
     return [UINib nibWithNibName:NSStringFromClass([JSQMessagesToolbarContentView_custom class]) 
         bundle:[NSBundle bundleForClass:[JSQMessagesToolbarContentView_custom class]]]; 
} 

#pragma mark - Initialization 

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 
    [self setTranslatesAutoresizingMaskIntoConstraints:NO]; 
    self.backgroundColor = [UIColor clearColor]; 
} 

//below method will place the contentview to desired position 
- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    self.holderViewLeadingConstraint.constant = 320; 
} 

#pragma mark - Setters 

- (void)setBackgroundColor:(UIColor *)backgroundColor 
{ 
    [super setBackgroundColor:backgroundColor]; 
    self.leftBarButtonContainerView.backgroundColor = backgroundColor; 
    self.rightBarButtonContainerView.backgroundColor = backgroundColor; 
} 

- (void)setLeftBarButtonItem:(UIButton *)leftBarButtonItem 
{ 
    [super setLeftBarButtonItem:leftBarButtonItem]; 
} 

- (void)setLeftBarButtonItemWidth:(CGFloat)leftBarButtonItemWidth 
{ 
    // self.leftBarButtonContainerViewWidthConstraint.constant = leftBarButtonItemWidth; 
    [self setNeedsUpdateConstraints]; 
} 

- (void)setRightBarButtonItem:(UIButton *)rightBarButtonItem 
{ 
    [super setRightBarButtonItem:rightBarButtonItem]; 
} 

- (void)setRightBarButtonItemWidth:(CGFloat)rightBarButtonItemWidth 
{ 
    // self.rightBarButtonContainerViewWidthConstraint.constant = rightBarButtonItemWidth; 
    [self setNeedsUpdateConstraints]; 
} 

- (void)setRightContentPadding:(CGFloat)rightContentPadding 
{ 
    // self.rightHorizontalSpacingConstraint.constant = rightContentPadding; 
    [self setNeedsUpdateConstraints]; 
} 

- (void)setLeftContentPadding:(CGFloat)leftContentPadding 
{ 
    // self.leftHorizontalSpacingConstraint.constant = leftContentPadding; 
    [self setNeedsUpdateConstraints]; 
} 

#pragma mark - UIView overrides 

- (void)setNeedsDisplay 
{ 
    [super setNeedsDisplay]; 
    [self.textView setNeedsDisplay]; 
} 


//return the custom view that we are going to create next 
- (JSQMessagesToolbarContentView_custom *)loadToolbarContentView 
{ 
    NSArray *nibViews = [[NSBundle bundleForClass:[JSQMessagesToolbarContentView_custom class]] loadNibNamed:NSStringFromClass([JSQMessagesToolbarContentView_custom class]) owner:nil options:nil]; 
    return nibViews.firstObject; 
} 

после этого вы необходимо создать новое имя .xib имя файла JSQMessagesToolbarContentView_custom.xib Этот файл содержит наш небольшой просмотр содержимого для inputToolbar и, что еще важнее, установить соединения, демонстрационный пример и также установить имя класса вида на JSQMessagesToolbarContentView_custom. слышать, я могу только добавить изображение пользовательского представления.

enter image description here

Теперь создать выход для ведущего ограничения, чтобы уменьшить размер представления контента, как дать ниже,

enter image description here

и добавить ограничения на выходе в качестве приведенных в демоверсии. поэтому, если вы добавите некоторые constrians без изменения базового класса, он даст ошибку или ошибку времени выполнения, поэтому отредактируйте базовый класс также

теперь перейдите к JSQMessagesToolbarContentView.h и добавьте форму свойств дутья JSQMessagesToolbarContentView.m, просто вырезайте и пройдите мимо и сделайте ее общедоступной.

@interface JSQMessagesToolbarContentView : UIView 

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leftBarButtonContainerViewWidthConstraint; 


@property (weak, nonatomic) IBOutlet NSLayoutConstraint *rightBarButtonContainerViewWidthConstraint; 

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leftHorizontalSpacingConstraint; 
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *rightHorizontalSpacingConstraint; 

//...rest of the code 

сейчас в файле JSQMessagesInputToolbar.m, для того, чтобы сделать бар инструмента прозрачным для половины SPLITVIEW,

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 
    //...rest of the code 
    [self setBackgroundImage:[UIImage new]//imageNamed:@"topbar"] 
       forToolbarPosition:UIToolbarPositionAny 
         barMetrics:UIBarMetricsDefault]; 
    [self setShadowImage:[UIImage new] forToolbarPosition:UIBarPositionAny]; 
    [self setBackgroundColor:[UIColor clearColor]]; 

} 

то будет теперь запустить проект и изменить ведущие ограничения постоянная вы видите ниже выход,

enter image description here

Смежные вопросы