如何在“界面构建器”中设置stretchableImageWithLeftCapWidth?
答案 0 :(得分:9)
“界面”构建器不支持可伸缩图像。
-(void) viewDidLoad {
[super viewDidLoad];
[myImageView setImage:[[myImageView image] stretchableImageWithLeftCapWidth:5 topCapHeight:5 ]];
}
答案 1 :(得分:2)
目前(截至4.5版)是InterfaceBuilder的限制。但是,必须为每个按钮创建一个IBOutlet
并手动指定图像在viewDidLoad
中是可伸缩的,这不是一个很好的解决方案,如果没有其他原因,它会使创建UI变得更加麻烦,而且更多脆。
而不是那样,让我们创建一个UIButton
子类,它将始终使任何背景图像默认可伸缩。在此示例中,我仅拉伸正常和突出显示的背景图像。对于生产就绪类,您可能希望检查背景和前景图像的所有状态并拉伸它们。
@implementation NTSTButton
- (id) initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
/* There is no support in IB for stretchable images. So, let's
make sure _any_ background image assigned to this button
stretches correctly.
Note: Setting the stretch cap to 10px, which should work with
almost all button background images.
*/
UIImage *normalImage =
[[self backgroundImageForState:UIControlStateNormal]
stretchableImageWithLeftCapWidth:10 topCapHeight:10] ;
UIImage *highlightedImage =
[[self backgroundImageForState:UIControlStateHighlighted]
stretchableImageWithLeftCapWidth:10 topCapHeight:10] ;
[self setBackgroundImage:normalImage
forState:UIControlStateNormal];
[self setBackgroundImage:highlightedImage
forState:UIControlStateHighlighted];
}
return self;
}
@end
答案 2 :(得分:0)
与@answerbot类似,但已更新为iOS 5.0及stretchableImageWithLeftCapWidth:topCapHeight:
,现已弃用。
@implementation UIButtonStretchable
- (id) initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setBackgroundImage: [[self backgroundImageForState:UIControlStateNormal] resizableImageWithCapInsets:UIEdgeInsetsMake(22,6,22,6)]forState:UIControlStateNormal];
[self setBackgroundImage: [[self backgroundImageForState:backgroundImageForState:UIControlStateHighlighted] resizableImageWithCapInsets:UIEdgeInsetsMake(22,6,22,6)]forState:backgroundImageForState:UIControlStateHighlighted];
}
return self;
}
@end
答案 3 :(得分:0)
iOS7还引入了资产目录,您可以在其中指定图像的可伸缩区域,但这仅适用于您只支持iOS7的情况(即,您不关心原始iPad,iPod touch或3GS的用户;是的,iOS中没有碎片。
答案 4 :(得分:0)
在Stretching
部分使用View
个配置。
首先,将View的模式更改为Aspect fill
。
然后在Stretching
部分中编辑X,Y,宽度,高度字段。
例如:假设您的图片尺寸为10x20,并希望将其放入视图尺寸5x10 ==>设定X = 5/10 = 0.5,Y = 10/20 = 0.5
注意:IB不允许您使用较小的图像“拉伸”到更大的帧中,因此您需要将图像设计得尽可能大