Ios 外部拉伸和内部保持不变的可调整大小的UIImage
我正在尝试在我的应用程序中创建一个垂直条的“夹点”,向用户显示他们可以在视图上滑动。我只想使用一个小版本的图像,它有抓地力和1像素的上方和下方,这是为其余的酒吧背景。因此:Ios 外部拉伸和内部保持不变的可调整大小的UIImage,ios,ios5,uiimageview,uiimage,Ios,Ios5,Uiimageview,Uiimage,我正在尝试在我的应用程序中创建一个垂直条的“夹点”,向用户显示他们可以在视图上滑动。我只想使用一个小版本的图像,它有抓地力和1像素的上方和下方,这是为其余的酒吧背景。因此: ssss ssss gggg becomes ssss ssss gggg ssss ssss 方法ResizeableImageWithCapInsets:允许您告诉iOS不要调整外部边缘,但有没有办法告诉它不要调整内部并随外部
ssss ssss
gggg becomes ssss
ssss gggg
ssss
ssss
方法ResizeableImageWithCapInsets:
允许您告诉iOS不要调整外部边缘,但有没有办法告诉它不要调整内部并随外部拉伸
我尝试过指定一个过大的cap inset,UIEdgeInsetsMake(29.0f,0.0f,29.0f,0.0f)
,这导致夹点位于图像帧的顶部,但在其他方面,这是我正在寻找的正确拉伸行为。我只需要把把手放在框架的中心
感兴趣的人的完整代码(这将导致在整个长度上重复夹点):
更新:基于所选答案的工作代码
@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
最简单的方法可能是将夹点部分设置为背景拉伸或平铺的较大条形图的子视图(高度较小,但全宽)。例如,可以通过自动调整遮罩的大小,使夹点零件在大视图中居中
@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