回答

0

末的答案...

如果你想减少inputToolbar你需要创建一个JSQMessagesToolbarContentView的子类,并为工具栏的内容视图提供自己的视图。

下面我给样本例子,在这之后创建的JSQMessagesToolbarContentView将它命名为subcalss作为subcalss JSQMessagesToolbarContentView_custom添加以下代码,

#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

,并添加出口的在演示中给出的约束。所以如果u加一些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

相关问题