2013-07-01 10 views
37

私はUIButtonのcornerRadiusを設定しようとしていますが、それを行う方法はわかりません。set cornerRadiusとsetbackgroundimageをUIButtonに設定します

私はこのように行う場合は、次の角が丸められていない

button.layer.cornerRadius = 5; 
[button setBackgroundColor:[UIColor colorWithPatternImage:radialGradient]]; 

:私はこのように行う場合

button.layer.cornerRadius = 5; 

が、うまく動作します。

私は

[button.layer setMasksToBounds:YES]; 

この聖霊降臨祭を解決する可能性が知っているが、私はボタンにいくつかの矢印を追加して、私は限界にマスクを設定した場合、矢印はマスクされているので、私は具体的には、別の解決策を探しています。

EDIT:

radialGradientは、それはあなたの中にQuartzCore Frameworkと輸入QuartzCore/CoreAnimation.hを追加する前に聖霊降臨祭のFUNC

+ (UIImage *)getRadialGradientImage:(CGSize)size centre:(CGPoint)centre radius:(float)radius startColor:(UIColor *)startColor endColor:(UIColor *)endColor{ 

// Initialise 
UIGraphicsBeginImageContextWithOptions(size, YES, 1); 

// Create the gradient's colours 
size_t num_locations = 2; 
CGFloat locations[2] = { 0.0, 1.0 }; 

const CGFloat *component_first = CGColorGetComponents([startColor CGColor]); 

CGFloat red1 = component_first[0]; 
CGFloat green1 = component_first[1]; 
CGFloat blue1 = component_first[2]; 

const CGFloat *component_second = CGColorGetComponents([endColor CGColor]); 
CGFloat red2 = component_second[0]; 
CGFloat green2 = component_second[1]; 
CGFloat blue2 = component_second[2]; 

const CGFloat components[8] = { red1,green1,blue1,1,red2,green2,blue2,1}; // End color 

CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB(); 
CGGradientRef myGradient = CGGradientCreateWithColorComponents (myColorspace, components, locations, num_locations); 

// Normalise the 0-1 ranged inputs to the width of the image 
CGPoint myCentrePoint = CGPointMake(centre.x * size.width, centre.y * size.height); 
float myRadius = MIN(size.width, size.height) * radius; 

// Draw it! 
CGContextDrawRadialGradient (UIGraphicsGetCurrentContext(), myGradient, myCentrePoint, 
          0, myCentrePoint, myRadius, 
          kCGGradientDrawsAfterEndLocation); 

// Grab it as an autoreleased image 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

// Clean up 
CGColorSpaceRelease(myColorspace); // Necessary? 
CGGradientRelease(myGradient); // Necessary? 
UIGraphicsEndImageContext(); // Clean up 
return image; 
} 
+0

U **はradialGradient **宣言>表示することができますか。? –

+0

私の質問を編集する –

答えて

3

//この

 UIButton *cancel=[[UIButton alloc]initWithFrame:CGRectMake(9, 9,35,35)]; 
    cancel.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"BackX.png"]]; 
[cancel setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 

    [cancel.layer setBorderColor: [[UIColor blackColor] CGColor]]; 
    [cancel.layer setBorderWidth: 1.0]; 
    cancel.contentMode=UIViewContentModeScaleAspectFill; 
    cancel.clipsToBounds=YES; 
    cancel.layer.cornerRadius=8.0; 
    [cancel addTarget:self action:@selector(cancelbtnclk1:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:cancel]; 

のようなボタンを作成しています。 hファイル。

は、それはあなたがここに...

+0

こんにちは、返信ありがとう、しかし私は具体的にclipToBoundsをしたくないです。 –

+0

OK ..いいえに設定したくない場合や、それを削除する場合は – Alex

+0

はい、それ以外の場合は角がありません:D –

45

を助け、私はコードをボタンを作成し、その背景色を設定する方法をであることを願っています。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
btn.frame = CGRectMake(100, 100, 100,50); 
[btn setTitle:@"Hello" forState:UIControlStateNormal]; 
[btn setBackgroundColor:[UIColor colorWithRed:128.0/255.0f green:0.0/255.0f blue:0.0/255.0f alpha:0.7]]; 
btn.frame = CGRectMake(100.0, 100.0, 120.0, 50.0);//width and height should be same value 
btn.clipsToBounds = YES; 

btn.layer.cornerRadius = 20;//half of the width 
btn.layer.borderColor=[UIColor redColor].CGColor; 
btn.layer.borderWidth=2.0f; 

[self.view addSubview:btn]; 

以下はあなたが常にコードで遊んで、あなたが背景と境界のために必要な色を作成することができ、上記のコード enter image description here

と関連しているボタンの画像です。これがあなたを助けてくれることを願っています。

+5

clipToBoundsが私の問題を解決しました –

16
btn.clipsToBounds = YES; 

私はちょうどこれを追加し、それは私のために働いた。実際には、特定のUIButtonに画像を設定してコーナー半径をUIButtonに設定することができました。

+0

それは素晴らしいです!今私は境界に境界半径が含まれていることを知っています。 –

4

また持つことができます。

btn.clipsToBounds = true; 
+0

Objective-Cでは 'YES' /' NO'を使用し、Swiftでは 'true' /' false'を使用することに注意してください。 – JAL

+1

@JAL Objective-Cでは、 'YES'と' NO'と一緒に 'true' /' TRUE'と 'false' /' FALSE'を使うこともできます。 – Luke

+0

true/falseはCのbool型にマップされるため、Objective-C BOOL型でYES/NOを使用する方がよいでしょう。 – JAL

関連する問題