1

ボタンの背景として画像を設定したい。だから私はイメージを作成します:

ボタン

次に、伸縮可能として実装したいと思います:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 200, 400)];  
[button setTitle:@"Test Button" forState:UIControlStateNormal];

UIImage *buttonImage = [_model.background resizableImageWithCapInsets:UIEdgeInsetsMake(6, 8, 6, 7)]; //this is screen 1
//UIImage *buttonImage = _model.background; //this is screen 2   

[button addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside];        
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[self addSubview:button];

画面2のように背景を引き伸ばしたいのですが、画面1のように角がシャープになってしまいます。 _model.backgroundはUIImageです。

画面 1 画面 2

私はそれを正しく使用していますか?私はドキュメンテーションに従っているのでUIEdgeInsetsMake(top,left,bottom,right)、角が伸びないはずですよね?

4

2 に答える 2

2

ドキュメントによると、インセット内の部分 (キャップ設定でロックされていない部分) はタイル化されています。したがって、タイル化する小さな 1 ピクセル領域が必要です。たとえば、インセットを次のようにしますUIEdgeIndetsMake(20,8,19,7)

これにより、次が生成されます。

ここに画像の説明を入力

于 2012-07-23T16:33:32.023 に答える
1

正直なところ、これはこの効果に最適な画像ではありませんが、次の行を試してください。

[button setBackgroundImage:[[UIImage imageNamed:@"image.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(20.f, 62.f, 20.f, 62.f)] forState:UIControlStateNormal];
于 2012-07-23T16:29:09.287 に答える