アプリで垂直バーの「グリップ」を作成して、ビューをスワイプできることをユーザーに表示しようとしています。グリップと、バーの残りの部分の背景である上下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