1

UIBarButtonItemsの外観をカスタマイズするために外観APIを使用しています。

現在、ボタンを次のように表示する必要があります。

ここに画像の説明を入力してください

iOS5では、私が使用している方法は次のとおりです。

UIImage *button = [[UIImage imageNamed:@"btn"]
                     resizableImageWithCapInsets:UIEdgeInsetsMake(3, 3, 3, 3)];
[[UIBarButtonItem appearance] setBackgroundImage:button forState:UIControlStateNormal
                                      barMetrics:UIBarMetricsDefault];

しかし、これは私にこれを与えるストレッチの代わりに画像のキャップされていない部分を並べて表示します:

ここに画像の説明を入力してください

iOS6には新しい方法があります

resizableImageWithCapInsets:resizingMode:

これにより、「ストレッチ」サイズ変更モードを指定できますが、iOS5では使用できません。

iOS5の画像の中央を並べて表示するのではなく、ボタンを伸ばすにはどうすればよいですか?

4

2 に答える 2

0

iOS5ではこれは不可能であることが判明しました。画像が常に並べて表示されるため、ボタンがスタイル設定されている場合、ボタンは常に水平スタイルのグラデーションを使用する必要があります。グラデーションの方向を変えてしまいました。

于 2013-03-08T08:02:29.550 に答える
0

stretchableImageWithLeftCapWidth:topCapHeight:ストレッチが必要な場合は、iOS5の古い非推奨の方法を使用できます。

UIImage* (^makeStretchableImage)(UIImage*, CGSize) = nil;
if ([UIImage instancesRespondToSelector:@selector(resizableImageWithCapInsets:resizingMode:)])
{
    // If resizableImageWithCapInsets:resizingMode: is available, use it
    makeStretchableImage = ^(UIImage* image, CGSize inset) {
        return [image resizableImageWithCapInsets:UIEdgeInsetsMake(inset.height, inset.width, inset.height, inset.width) resizingMode:UIImageResizingModeStretch];
    };
}
else
{
    // Else, we are on an older iOS release, use the deprecated iOS5 method instead
    makeStretchableImage = ^(UIImage* image, CGSize inset) {
        return [image stretchableImageWithLeftCapWidth:inset.width topCapHeight:inset.height];
    };
}

UIImage* stretchableImage1 = makeStretchableImage(originalImage1, CGSizeMake(5,2));
UIImage* stretchableImage2 = makeStretchableImage(originalImage2, CGSizeMake(15,4));
UIImage* stretchableImage3 = makeStretchableImage(originalImage3, CGSizeMake(8,5));
于 2013-08-22T10:23:26.713 に答える