2

アプリで垂直バーの「グリップ」を作成して、ビューをスワイプできることをユーザーに表示しようとしています。グリップと、バーの残りの部分の背景である上下1ピクセルの画像の小さなバージョンを使用したいと思います。それで:

ssss          ssss
gggg  becomes ssss
ssss          gggg
              ssss
              ssss

この方法resizableImageWithCapInsets:では、iOSに外側のエッジを調整しないように指示できますが、内部を調整せず、外側でストレッチするように指示する方法はありますか?

特大のキャップインセットを指定しようとUIEdgeInsetsMake(29.0f, 0.0f, 29.0f, 0.0f)しましたが、その結果、グリップが画像のフレームの上部に表示されましたが、それ以外の場合は、私が探している正しいストレッチ動作です。グリップ部分をフレームの中央に配置するだけです。

興味のある人のための完全なコード(これにより、グリップが全長にわたって繰り返されます):

gripBar = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"grip"] resizableImageWithCapInsets:UIEdgeInsetsMake(1.0f, 0.0f, 1.0f, 0.0f)]];
gripBar.frame = CGRectMake(0, 0, gripWidth, fullHeight);
[view gripBar];

更新:選択した回答に基づく作業コード

@implementation GripBar

- (id)init {
    self = [super init];
    if (self) {
        UIImageView *bar = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"gripback"] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0f, 0.0f, 1.0f, 0.0f)]];
        bar.autoresizingMask = UIViewAutoresizingFlexibleHeight;
        [self addSubview:bar];

        UIImageView *grip = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"grip"]];
        grip.contentMode = UIViewContentModeCenter;
        grip.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
        [self addSubview:grip];
    }
    return self;
}

@end
4

1 に答える 1

1

これを行う最も簡単な方法は、おそらくグリップ部分を、背景が伸びたりタイル状になったりする大きなバービューの(高さは小さいが全幅の)サブビューにすることです。マスクの自動サイズ変更などにより、グリップ部分を拡大表示の中央に配置できます。

于 2012-06-27T01:01:27.910 に答える