2

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

1 回答 1

1

最简单的方法可能是让您的夹点部分成为背景拉伸或平铺的较大条形视图的(小高度,但全宽)子视图。例如,您可以通过自动调整蒙版大小使夹点部分在大视图中居中。

于 2012-06-27T01:01:27.910 回答