我正在尝试为我的应用程序中的垂直条创建一个“抓地力”,以向用户显示他们可以在视图上滑动。我想只使用图像的一个小版本,它有手柄,上下各 1 px,这是栏其余部分的背景。所以:
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