外部延伸和内部的可调整的UIImage保持不变

我正在尝试在我的应用中为垂直条创build一个“抓地力”,以向用户显示他们可以在视图上滑动。 我想只使用一个小的版本的图像,它具有抓地力和1px的上下,这是酒吧的其余部分的背景。 所以:

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 

最简单的方法就是让你的抓手部分成为一个大的酒吧视图的一个(小高度,但是全angular)的子视图。 例如,您可以通过自动resize的掩码来将抓握部件保持在较大的视图中。