UIImage类通过约束或框架将图像缩放到您设置的尺寸,具体取决于您放置材料的方式.如您所知,您可以通过名称从资产目录中加载图像.
所以只需将设备类的所有分辨率上的图像上传到资产目录(例如1x,2x,3x ......)然后创建一个UIImage()并在它是子视图后设置UIImage实例的框架,然后在那里你走.iOS将根据您拥有的设备/屏幕选择正确的图像大小,以及为缩放图像获得良好分辨率所能做到的.
默认情况下,您将使用约束来在Interface Builder中调整UIImage的大小.如果以编程方式创建图像,您将获得更多灵活性,但在将UIImage放入超视图后如何调整UIImage的大小.
以下是一些扩展UIImage的代码.获得图像的位图上下文后,如下面的函数所示,您可以使用其他绘图和字体函数以及派生的上下文句柄来添加文本.当您搜索核心图像和核心文本类时,您会注意到转换选项以及操作和添加文本以及执行各种图像处理的方式.
func scaleImage(image: UIImage, newSize: CGSize) -> UIImage {
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
var colorSpace = CGColorSpaceCreateDeviceRGB()
var bytesPerRow = CGImageGetBytesPerRow(image.CGImage)
var ctx = CGBitmapContextCreate(nil,
UInt(newSize.width),
UInt(newSize.height),
CGImageGetBitsPerComponent(image.CGImage),
UInt(newSize.width * 4),
colorSpace,
bitmapInfo)!
CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh)
CGContextDrawImage(ctx, CGRect(origin: CGPointZero, size: CGSizeMake(newSize.width, newSize.height)), image.CGImage)
return UIImage(CGImage: CGBitmapContextCreateImage(ctx))!
}
Run Code Online (Sandbox Code Playgroud)
您还可以通过编程方式拍摄快照,将标签转换为图像,如下所示:
func takeSnapshot(view: UIView) -> UIImageView {
var image : UIImage
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0.0)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
var imageView = UIImageView(image: image)
imageView.opaque = false
return imageView
}
Run Code Online (Sandbox Code Playgroud)
并将一个图像叠加在另一个上,如下所示:
func overlayImages(images: [UIImage]) -> UIImage? {
var compositeImage : UIImage?
if images.count > 0 {
var maxWidth = CGFloat(0), maxHeight = CGFloat(0)
for image in images {
if image.size.width > maxWidth {
maxWidth = image.size.width
}
if image.size.height > maxHeight {
maxHeight = image.size.height
}
}
var size = CGSizeMake(maxWidth, maxHeight)
UIGraphicsBeginImageContext(size);
for image in images {
var x = maxWidth / 2 - image.size.width / 2
var y = maxHeight / 2 - image.size.height / 2
image.drawInRect(CGRectMake(x, y, image.size.width, image.size.height))
}
compositeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return compositeImage;
}
Run Code Online (Sandbox Code Playgroud)
您也可以继承您的UIImageView()并覆盖drawRect()方法rect以添加一些文本,但不要忘记调用super()以确保绘制图像.
var stringAttrs = [UITextAttributeFont : font,
UITextAttributeTextColor : textColor ]
var attrStr = NSAttributedString(string:"hello", attributes:stringAttrs)
attrStr.drawAtPoint:CGPointMake(10.f, 10.f)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |