我有一个平铺的全屏幕背景图像,即它必须是为了使一个大的水平和垂直转载几次。 就像在丑陋的主页浏览器;)
是的UIImageView我的朋友呢?
我有一个平铺的全屏幕背景图像,即它必须是为了使一个大的水平和垂直转载几次。 就像在丑陋的主页浏览器;)
是的UIImageView我的朋友呢?
如果我理解你的问题正确,您可以使用colorWithPatternImage:
上UIColor
然后设置一个背景颜色UIView
。
如果你必须使用UIImageView
,你可以做你的图像视图将在平铺图像的前面画放置相同,但无论图像。
要获取阿尔法与图形图象工作,请确保您有以下设置:
view.backgroundColor = [UIColor colorWithPatternImage:aImage];
view.layer.opaque = NO;
多年来,我用比尔Dudney的做法,但iOS 6中有一个更好的解决方案。 而且......今天我发现了一个方法,使老版本的iOS的这一工作了。
的UIImage + Tileable.h
#import <UIKit/UIKit.h>
@interface UIImage (Tileable)
-(UIImage*) imageResizingModeTile;
@end
的UIImage + Tileable.m
#import "UIImage+Tileable.h"
@implementation UIImage (Tileable)
-(UIImage*) imageResizingModeTile
{
float iOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if( iOSVersion >= 6.0f )
{
return [self resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeTile];
}
else
{
return [self resizableImageWithCapInsets:UIEdgeInsetsZero];
}
}
@end
我使用的@里维拉的解决方案的变化:
放入一个UIView扩展以下内容:
- (void)setColorPattern:(NSString *)imageName
{
[self setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:imageName]]];
}
然后,你可以设置在情节提要/厦门国际银行文件中的背景图案:
当我真的很喜欢Interface Builder中我创造了这个UIImageView
子类申请的瓷砖背景:
@interface PETiledImageView : UIImageView
@end
@implementation PETiledImageView
- (void)awakeFromNib
{
[super awakeFromNib];
UIImage * imageToTile = self.image;
self.image = nil;
UIColor * tiledColor = [UIColor colorWithPatternImage:imageToTile];
self.backgroundColor = tiledColor;
}
@end
我试图压倒一切的setImage:
但似乎IB不把它叫做解码NIB文件时。
在WWDC 2018视频会话219 -图像和图形的最佳做法 ,苹果电脑的工程师明确建议不要使用图案颜色为平铺背景:
我建议不要使用图案颜色与UIView的背景颜色属性。 相反,创建一个UIImageView。 将您的图像到图像视图。 并使用上的UIImageView的功能,适当地设置您的瓦片参数。
因此,要创建一个平铺的背景最好和最简单的方法是这样的:
imageView.image = image.resizableImage(withCapInsets: .zero, resizingMode: .tile)
或者更简单,如果你使用的资产类别-选择图形图象资产,在属性检查器中,使切片 (水平/垂直或两者),设置插图为零,宽度/高度到图像的尺寸:
后来干脆这个图像分配给您的图像视图(Interface Builder的作品,太),只是不要忘了给的UIImageView的设置contentMode
到.scaleToFill
。
斯威夫特版本的丹尼尔·T的解决方案。 你仍然需要设置在IB的的keyPath值。 当然,你可能会更小心展开可选的UIImage。
extension UIView {
var colorPattern:String {
get {
return "" // Not useful here.
}
set {
self.backgroundColor = UIColor(patternImage: UIImage(named:newValue)!)
}
}
}