Uda*_*y.M 2 objective-c uibutton cgcolor ios
我正试图为UIButton保留边框.如果我使用以下代码,它正在工作.
情况1
[[_myButton layer] setBorderWidth:1.0f];
[[_myButton layer] setBorderColor:[UIColor lightGrayColor].CGColor];
Run Code Online (Sandbox Code Playgroud)
但在我写作之前:
self.baseTypeButton.layer.borderWidth=2.0f;
self.myButton.layer.borderColor=[UIColor lightGrayColor];
Run Code Online (Sandbox Code Playgroud)
XCode建议我这样做
现在我的代码发生了变化,但在这种情况下我没能设置边框:
案例:2
_myButton.layer.borderWidth=2.0f;
_myButton.layer.borderColor=(__bridge CGColorRef _Nullable)([UIColor lightGrayColor]);
Run Code Online (Sandbox Code Playgroud)
我没有使用自动布局.任何人都可以解释case-1和case-2之间的区别.为什么案例2不会工作.
layer.borderColor必须是CGColor,因此下面的代码将起作用.
_myButton.layer.borderWidth=2.0f;
_myButton.layer.borderColor=[ UIColor lightGrayColor ].CGColor;
Run Code Online (Sandbox Code Playgroud)
你的代码
[UIColor lightGrayColor]
Run Code Online (Sandbox Code Playgroud)
返回一个UIColor实例,而不是一个CGColor实例.并且UIColor无法桥接到CGColor,所以你的演员
(__bridge CGColorRef _Nullable)
Run Code Online (Sandbox Code Playgroud)
返回意外结果.
您可以使用此代码查看奇怪的结果
NSLog( @"%@", (__bridge CGColorRef _Nullable)([UIColor lightGrayColor]) );
Run Code Online (Sandbox Code Playgroud)
回到下面.(Xcode 7.3)
2016-04-06 15:30:51.415 36442877[8570:2643221] UIDeviceWhiteColorSpace 0.666667 1
Run Code Online (Sandbox Code Playgroud)
如果你给borderColor CGColor实例目录,你不需要强制转换.
| 归档时间: |
|
| 查看次数: |
4710 次 |
| 最近记录: |