循环创建btn+使用imageEdgeInsets约束+设置图片大小

来源:互联网 发布:淘宝书城 编辑:程序博客网 时间:2024/06/05 00:36

//设置btn的图片标题位置

-(void)addBtnsWithImages:(NSArray *)images btnTitles:(NSArray *)titles

{

    CGRect frame = self.containerView.frame;

    self.imageArray = images;

    self.titleArray = titles;

    CGFloat imageH =30;

    CGFloat labWidth = frame.size.width/self.imageArray.count;

     for (int i =0; i < self.imageArray.count; i++) {

         UIButton *btn = [UIButtonbuttonWithType:UIButtonTypeCustom];

         btn.tag =DefaultTag + i;

         

         //获取图片

         NSString *imgUrl = [WPLUtilgetWorkPlatformImgUrl:self.imageArray[i]];

         UIImage *image = [UIImageimageWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:imgUrl]]];

         //修改图片尺寸

         UIImage *newimage = [selfimageWithImageSimple:imagescaledToSize:CGSizeMake(imageH, imageH)];

         [btn setImage:newimageforState:UIControlStateNormal];

         

         //设置标题

         [btn setTitle:self.titleArray[i]forState:UIControlStateNormal];

         [btn setTitleColor:[UIColorblackColor] forState:UIControlStateNormal];

         btn.titleLabel.font = [UIFontsystemFontOfSize:14];

         

         [btn addTarget:selfaction:@selector(clickBtnAction:)forControlEvents:UIControlEventTouchUpInside];

         

         [self.containerViewaddSubview:btn];


         btn.contentHorizontalAlignment =UIControlContentHorizontalAlignmentLeft;

         btn.contentVerticalAlignment =UIControlContentVerticalAlignmentTop;


         //获取 titleLabelsize

         CGSize titleLabelSize = [btn.titleLabel.textsizeWithAttributes:@{NSFontAttributeName : btn.titleLabel.font}];

         //获取 imageViewsize

         [btn sizeToFit];

         CGSize imageViewSize = btn.imageView.frame.size;


         btn.frame =CGRectMake(labWidth *i, 16, labWidth, frame.size.height -16*2);

         // button标题的偏移量

         btn.titleEdgeInsets =UIEdgeInsetsMake(imageViewSize.height +16, (btn.frame.size.width - titleLabelSize.width) / 2.0 - imageViewSize.width,0, 0);

         // button图片的偏移量

         btn.imageEdgeInsets =UIEdgeInsetsMake(8, (btn.frame.size.width - imageViewSize.width) /2.0, 0, imageViewSize.width/2);

     }

}


- (UIImage *)imageWithImageSimple:(UIImage *)image scaledToSize:(CGSize )newSize

{

    UIGraphicsBeginImageContext(newSize);

    [image drawInRect:CGRectMake(0 ,0 ,newSize.width, newSize.height)];

    UIImage * newImage =UIGraphicsGetImageFromCurrentImageContext ();

    UIGraphicsEndImageContext ();

    return newImage;

}


原创粉丝点击