我通常在iOS上使用自定义UIColors使用Swift扩展,但现在使用iOS11 / XCode9我们可以创建颜色集。我们怎样才能使用它们?
更新 - 提示
正如@Cœur所说,我们可以拖放颜色,并像UIColor对象一样使用它,可能的解决方案可以用它作为扩展:
或作为常数:
现在我想知道我们是否可以像对UIImage访问资产图像一样访问它们,例如:
ngOnInit(){}
答案 0 :(得分:53)
UIColor(named: "myColor")
来源:WWDC 2017 Session 237 —— What's New in MapKit
警告:您的项目的部署目标需要设置为iOS 11.0。
答案 1 :(得分:35)
(问题更新的简短回答:Xcode 9.0中有UIColor(named: "MyColor")
)
回答原来的问题:
答案 2 :(得分:14)
Add a colour set to an asset catalog, name it and set your colour in the attributes inspector, then call it in your code with <div class="header">
<div class="slider-pro" id="my-slider">
<div class="sp-slides">
<div class="sp-slide">
<img class="sp-image" src="https://dl.dropbox.com/s/rp1imhbw1s06vjv/IMG_4875.JPG" />
</div>
<div class="sp-slide">
<img class="sp-image" src="https://dl.dropbox.com/s/6ffmnfh0oukrgb7/IMG_5064.JPG" />
</div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
.
In the asset catalog viewer, click the plus button at the bottom right of the main panel and choose New Color Set
Click on the white square, and select the Attributes Inspector (right-most icon in the right pane)
From there you can name and choose your colour.
#top-background-flag {
border-top: 2px solid #C2C2C2; /* top border on the parent */
position: relative;
padding-bottom: 3.5rem;
overflow: hidden;
}
#top-background-flag:before {
background-color: #5DCAD3;
transform: skewy(-4deg); /* angle you want */
transform-origin: bottom left;
border-bottom: 2px solid #C2C2C2; /* bottom border skews with the object */
content: ' ';
display: block;
height: 100%;
width: 100%;
position: absolute;
z-index: -1;
bottom: 0;
}
. This returns an optional, so you'll need to unwrap it in most cases (this is probably one of the few cases where a force unwrap is acceptable, given you know the colour exists in your asset catalog).答案 3 :(得分:4)
// iOS
let color = UIColor(named: "SillyBlue")
// macOS
let color = NSColor(named: "SillyBlue")
答案 4 :(得分:4)
答案 5 :(得分:2)
您需要使用UIColor(named: "appBlue")
。
并且您可以在UIColor扩展中创建一个函数以进行简单访问。
enum AssetsColor {
case yellow
case black
case blue
case gray
case green
case lightGray
case seperatorColor
case red
}
extension UIColor {
static func appColor(_ name: AssetsColor) -> UIColor? {
switch name {
case .yellow:
return UIColor(named: "appYellow")
case .black:
return UIColor(named: "appBlack")
case .blue:
return UIColor(named: "appBlue")
case .gray:
return UIColor(named: "appGray")
case .lightGray:
return UIColor(named: "appLightGray")
case .red:
return UIColor(named: "appRad")
case .seperatorColor:
return UIColor(named: "appSeperatorColor")
case .green:
return UIColor(named: "appGreen")
}
}
您可以像这样使用它
userNameTextField.textColor = UIColor.appColor(.gray)
答案 6 :(得分:1)
对于您的问题,是否可以使用文字访问颜色资产,例如图像,从xcode 10.2开始,您可以键入colorliteral
,然后可以选择资产管理器下要使用的颜色。< / p>
答案 7 :(得分:1)
使用UIColor(named:)
时,如果在Swift程序包中加载颜色时遇到延迟:
以上答案对于常规项目完全有效,但是如果您使用快速打包的资产,则在使用UIColor(named: "example_name")
时加载颜色会出现延迟。如果您使用针对模块的UIColor(named: "background", in: Bundle.module, compatibleWith: .current)
重载,则颜色将立即加载而不会产生任何延迟。
注意:我对Xcode 12.1很有经验。
答案 8 :(得分:0)
您可以使用这种方式进行简单访问(swift 4)
enum AssetsColor: String {
case backgroundGray
case blue
case colorAccent
case colorPrimary
case darkBlue
case yellow
}
extension UIColor {
static func appColor(_ name: AssetsColor) -> UIColor? {
return UIColor(named: name.rawValue)
}
}