0

私は2つのボタンを持っていて、すべてのボタンの左側にバッジラベルがありますが、これらのバッジラベルのサイズを動的にしたいのですが、現時点でこれを行うにはどうすればよいですか アプリを起動すると

アプリを起動すると

しかし、穴のセルを上にスクロールすると、こうあるべきですそれがどうあるべきか

Iphone SDK 6.0 を使用する場合:

#import <QuartzCore/QuartzCore.h>

 #import "JSMBadgeLabel.h"

 @interface JSMBadgeLabel ()

 -(void) setup;
 @end

 @implementation JSMBadgeLabel

 @synthesize targetUIView = _targetUIView;

 -(void) setup{
    self.layer.cornerRadius = self.font.pointSize *0.8;

 }

 -(void)awakeFromNib
 {
    [self setup];
 }

 -(void)setText:(NSString *)text{
    [super setText:text];

    CGSize size = [text sizeWithFont:self.font];
    self.frame = CGRectMake(self.frame.origin.x ,self.frame.origin.y,size.width + self.font.pointSize *0.8,size.height);
    CGRect badgeFrame = self.frame;
    CGRect targetFrame = self.targetUIView.frame;

    self.frame = CGRectMake(targetFrame.origin.x+targetFrame.size.width- badgeFrame.size.width/2,targetFrame.origin.y-badgeFrame.size.height/2,badgeFrame.size.width,badgeFrame.size.height);}@end
-(void) updateAsBadge:(NSString*)newText {
    self.text = newText;
    [self sizeToFit];
    const int padding = 1;
    self.frame = CGRectMake(self.superview.bounds.size.width - self.bounds.size.width-padding, padding, self.bounds.size.width, self.bounds.size.height);
}

ありがとう。

4

2 に答える 2

0

私は自分でいくつかの解決策を見つけましたが、このバッジをTablViewControllerに含めました

cell.thingsBadge.text =[NSString stringWithFormat:@"%d",city.unterort.count];
CGSize size1 = [cell.villagesBadge.text sizeWithFont:cell.villagesBadge.font];
CGRect newFrame1 = CGRectMake(cell.villagesBadge.frame.origin.x+(cell.villagesBadge.frame.size.width - (size1.width+4)), cell.villagesBadge.frame.origin.y, size1.width+4, cell.thingsBadge.frame.size.height);
cell.thingsBadge.layer.cornerRadius = cell.villagesBadge.font.pointSize *0.8;
cell.thingsBadge.frame = newFrame1;
[cell.thingsBadge setNeedsDisplay];
于 2013-01-17T11:09:05.630 に答える
0

あなたは試すことができます-sizeToFit、それはうまくいくはずです、私が追加することの1つは、空のテキスト値に対してフレームを手動で設定することです. もう1つのことは、プロパティを使用してラベルの位置をより適切に更新できることです。これはsuperviewドラフトです(オーバーライドではありません-setText:)

-(void) updateAsBadge:(NSString*)newText {
  self.text = newText;
  [self sizeToFit];
  const int padding = 1;
  self.frame = CGRectMake(self.superview.width - self.width-padding, padding, self.width, self.height);
}
于 2013-01-16T13:28:46.553 に答える