2

UIButton に小さな赤い点を追加する必要があります。このメソッドを使用して、カスタム UIButton の色を設定します。

+ (UIImage *) imageFromColor:(UIColor *)color {
    CGRect rect = CGRectMake(0, 0, 1, 1);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    //  [[UIColor colorWithRed:222./255 green:227./255 blue: 229./255 alpha:1] CGColor]) ;
    CGContextFillRect(context, rect);
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

次に、このボタンに単純な赤い点を追加する必要があります。これは、おそらく次のように行われます。

+ (UIImage *) addRedDot 
{
    CGRect rect = CGRectMake(0, 0, 1, 1);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
    //  [[UIColor colorWithRed:222./255 green:227./255 blue: 229./255 alpha:1] CGColor]) ;
    CGContextSetRGBStrokeColor(context, 1.0f, 0.0f, 0.0f, 1.0f);

    CGContextSetLineWidth(context, 2.0);
    CGContextStrokeEllipseInRect(context, CGRectMake(10, 11, 21, 21));

 //   CGContextFillRect(context, rect);
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

しかし、それは白い画像を返すだけです..このクライアントコードは次のとおりです。

   if ([dateStringToAssign isEqualToString:[self dateToString:[NSDate date]]]) 
            {

                [buttonToLay setBackgroundImage:[CommonUIUtility imageFromColor:[UIColor cyanColor]] 
                                  forState:UIControlStateNormal];


            }
            if([dbm hasEventsForDate:buttonToLay.ownedDate])
            {
                NSLog(@"Has events");
                [buttonToLay setBackgroundImage:[CommonUIUtility addRedDot] forState:UIControlStateNormal];

            }

既存の CGContext に小さな赤い点を追加する正しい方法は何ですか?

4

1 に答える 1

1

この行で設定したコンテキストの境界を超えて楕円をストロークしています。

CGContextStrokeEllipseInRect(context, CGRectMake(10, 11, 21, 21));

楕円を表示するには、サイズが 1x1 のように見えるコンテキストの境界内にある必要があります。

于 2012-05-03T12:44:28.407 に答える