PDF 格式的新标签栏图标...创建自定义的指南?
New tab bar icons in PDF format... Guidelines to create custom?
我注意到在 Xcode 的最新版本中,"Tabbed Application" 的项目模板创建了一个项目,其中标签栏图标图像(称为 "first" 和 "second" ,对于默认的两个 tabs/view 可用控制器)实际上以 .pdf 格式存储 ,而不是 .png,并显示在 Assets.xcassets 文件夹中,分辨率为 "All" 用作 "Universal"(而不是像应用程序图标一样用作 "iPhone app iOS 7-8" 的分辨率“@3x”)。
我假设这是为了提供基于矢量图形的资源,它真正独立于分辨率,因此支持各种设备。
我的问题是:以这种格式创建自定义资源的准则是什么?我想应该首先在 Adobe Illustrator 中创建自定义轮廓并将其导出为 pdf 格式,但是,我应该使用什么尺寸和单位?还有其他需要注意的地方吗?我没有在 Apple 官方文档中找到任何内容,网络搜索 "ios tab bar icon pdf" 只提供指向提供剪贴画等的网站的链接。
注意:我想过要post这个问题还是在Graphic Design Stack Exchange网站上,但它仍然与Xcode IDE 和开发 iOS 应用程序,所以我把赌注押在了这里。如果您不这么认为,请随时投票赞成关闭它。
I assume this is to provide a vector graphics-based resource that is
truly resolution-independent and hence supports all sorts of devices.
我的理解是Xcode实际上是将这些矢量图像转换成具有适当分辨率的位图。因此它们仅在设计时是矢量,在 运行 时是位图。
What are the guidelines to create custom resources in this format? I
guess it should start by creating a custom outline in Adobe
Illustrator and exporting it in pdf format, but, What size and units
should I use?
创建以磅为单位的大小,与您想要的图标大小相同。然后导出为PDF。我注意到有些程序生成的 PDF 在 Interface Builder 中看起来不错,但在实际应用程序中是空白的。也许 Illustrator 可以正常工作,但如果不行,请尝试使用其他程序转换为 PDF。
我理解 MirekE 的回答,因为我遇到了挑战,现在有了解决方案。但对于其他人来说,这是一个真实世界的例子。
我使用草图(强烈推荐)和 30 X 30 画板创建我所有的线条图标(或您选择的任何东西),然后在里面应用绘图。我使背景透明,然后将导出设置为 1x 大小并应用 PDF 格式。在此屏幕截图中可见。
然后简单地导入 Xcode > 在 Images.xcassets 中创建对象 > select 图像组 > 从下拉比例因子中选择单个向量(在属性检查器中) > 然后只需将导入的图像拖放到单个占位符中即可。
我已将此方法应用于我所有的自定义标签栏项目,结果非常好。
我刚遇到这个问题,我在使用此扩展程序分配它时通过手动调整 UIImage
的大小来解决它:
extension UIImage {
func aspectFit(to size: CGSize) -> UIImage? {
let width = self.size.width
let height = self.size.height
let widthScale = size.width / width
let heightScale = size.height / height
let scaleFactor = min(widthScale, heightScale)
UIGraphicsBeginImageContextWithOptions(CGSize(width: width * scaleFactor, height: height * scaleFactor), false, 0.0)
self.draw(in: CGRect(x: 0.0, y: 0.0, width: width * scaleFactor, height: height * scaleFactor))
defer {
UIGraphicsEndImageContext()
}
return UIGraphicsGetImageFromCurrentImageContext()
}
}
用法:
tabBarItem.image = myImage.aspectFit(to: CGSize(width: 25, height: 25))
我注意到在 Xcode 的最新版本中,"Tabbed Application" 的项目模板创建了一个项目,其中标签栏图标图像(称为 "first" 和 "second" ,对于默认的两个 tabs/view 可用控制器)实际上以 .pdf 格式存储 ,而不是 .png,并显示在 Assets.xcassets 文件夹中,分辨率为 "All" 用作 "Universal"(而不是像应用程序图标一样用作 "iPhone app iOS 7-8" 的分辨率“@3x”)。
我假设这是为了提供基于矢量图形的资源,它真正独立于分辨率,因此支持各种设备。
我的问题是:以这种格式创建自定义资源的准则是什么?我想应该首先在 Adobe Illustrator 中创建自定义轮廓并将其导出为 pdf 格式,但是,我应该使用什么尺寸和单位?还有其他需要注意的地方吗?我没有在 Apple 官方文档中找到任何内容,网络搜索 "ios tab bar icon pdf" 只提供指向提供剪贴画等的网站的链接。
注意:我想过要post这个问题还是在Graphic Design Stack Exchange网站上,但它仍然与Xcode IDE 和开发 iOS 应用程序,所以我把赌注押在了这里。如果您不这么认为,请随时投票赞成关闭它。
I assume this is to provide a vector graphics-based resource that is truly resolution-independent and hence supports all sorts of devices.
我的理解是Xcode实际上是将这些矢量图像转换成具有适当分辨率的位图。因此它们仅在设计时是矢量,在 运行 时是位图。
What are the guidelines to create custom resources in this format? I guess it should start by creating a custom outline in Adobe Illustrator and exporting it in pdf format, but, What size and units should I use?
创建以磅为单位的大小,与您想要的图标大小相同。然后导出为PDF。我注意到有些程序生成的 PDF 在 Interface Builder 中看起来不错,但在实际应用程序中是空白的。也许 Illustrator 可以正常工作,但如果不行,请尝试使用其他程序转换为 PDF。
我理解 MirekE 的回答,因为我遇到了挑战,现在有了解决方案。但对于其他人来说,这是一个真实世界的例子。
我使用草图(强烈推荐)和 30 X 30 画板创建我所有的线条图标(或您选择的任何东西),然后在里面应用绘图。我使背景透明,然后将导出设置为 1x 大小并应用 PDF 格式。在此屏幕截图中可见。
然后简单地导入 Xcode > 在 Images.xcassets 中创建对象 > select 图像组 > 从下拉比例因子中选择单个向量(在属性检查器中) > 然后只需将导入的图像拖放到单个占位符中即可。
我已将此方法应用于我所有的自定义标签栏项目,结果非常好。
我刚遇到这个问题,我在使用此扩展程序分配它时通过手动调整 UIImage
的大小来解决它:
extension UIImage {
func aspectFit(to size: CGSize) -> UIImage? {
let width = self.size.width
let height = self.size.height
let widthScale = size.width / width
let heightScale = size.height / height
let scaleFactor = min(widthScale, heightScale)
UIGraphicsBeginImageContextWithOptions(CGSize(width: width * scaleFactor, height: height * scaleFactor), false, 0.0)
self.draw(in: CGRect(x: 0.0, y: 0.0, width: width * scaleFactor, height: height * scaleFactor))
defer {
UIGraphicsEndImageContext()
}
return UIGraphicsGetImageFromCurrentImageContext()
}
}
用法:
tabBarItem.image = myImage.aspectFit(to: CGSize(width: 25, height: 25))