将徽章图标添加到圆形矩形按钮



有没有一种方便的方法可以制作带有徽章的按钮? 不在图标上...我想在应用程序中执行此操作。 带有程序选择的徽章的按钮或图像。 还是我必须构建一个 Photoshop 图像库?

您需要使用resizableImageWithCapInsets来实现这一点,而无需Photoshop图像库。有一些很棒的线程(这里和这里)可以解释它的用法。

这是我刚刚举的一个例子,给你一个想法:

//Create a label (width/height not important at this stage)
UILabel *yourLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 1, 1)];
yourLabel.text = @"7+";
[yourLabel sizeToFit];
CGRect labelFrame = yourLabel.frame;
//Here we create a UIImage that is resizable, but will not resize the areas concerned with the cap insets you've defined
UIImage *badgeImage = [[UIImage imageNamed:@"badge.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
UIImageView *badgeImageView = [[UIImageView alloc]initWithImage:badgeImage];
badgeImageView.contentMode = UIViewContentModeScaleToFill;
badgeImageView.backgroundColor = [UIColor clearColor];
labelFrame.size.width += 5; //This is the 'padding' on the right and left (added together)
//If your badge edges are completely circular then you don't want to change the height, but if they're not then go ahead in the same way with the width. If your badge has a static height, you'll need to make sure the font size doesn't exceed this height; better start off with a small font-size
badgeImageView.frame = labelFrame; //The badge is now the right width with padding taken into account
//Center the label on the badge image view
yourLabel.center = CGPointMake(badgeImageView.frame.size.width/2, badgeImageView.frame.size.height/2);
//Finally we add the label to the badge image view
[badgeImageView addSubview:yourLabel];
//Add your badge to the main view
[self.view addSubview:badgeImageView];
[badgeImageView release];
[yourLabel release];
UILabel   *lbl_notification_count = [[UILabel alloc]initWithFrame:CGRectMake(5,0, 18, 18)];
        lbl_notification_count.textColor = [UIColor whiteColor];
        lbl_notification_count.textAlignment = NSTextAlignmentCenter;
        lbl_notification_count.text = [NSString stringWithFormat:@"%d",appDel.NotificationBadge];
        lbl_notification_count.adjustsFontSizeToFitWidth=YES;
        lbl_notification_count.layer.borderWidth = 1;
        lbl_notification_count.layer.cornerRadius = lbl_notification_count.layer.frame.size.height/2;
        lbl_notification_count.layer.masksToBounds = YES;
        lbl_notification_count.layer.borderColor =[[UIColor colorWithRed:241.0/255.0 green:84.0/255.0 blue:67.0/255.0 alpha:1.0] CGColor];
        lbl_notification_count.backgroundColor = [UIColor colorWithRed:241.0/255.0 green:84.0/255.0 blue:67.0/255.0 alpha:1.0];
        lbl_notification_count.font = CustomFontMediumWithSize(12);
        if (appDel.NotificationBadge >= 1) {
            [btnNotification addSubview:lbl_notification_count];
             [lbl_notification_count setHidden:NO];
        }else{
             [lbl_notification_count setHidden:YES];
        }

最新更新