使用CALayer使按钮变圆的令人费解的行为
我一直在使用按钮的CALayer为配置文件图像创建一个圆形按钮。使用CALayer使按钮变圆的令人费解的行为
我删除了一个背景图片,而是直接将渐变直接应用到此配置文件图片所在的ViewController视图的背景中,出于某种原因,我的配置文件图像消失了!下面是我使用,使按钮一轮代码:
//NSLog(@"Building round layer. proflieImageButton width is: %f", _profileImageButton.imageView.frame.size.width);
CALayer *imageLayer = _profileImageButton.layer;
[imageLayer setCornerRadius:_profileImageButton.frame.size.width/2];
[imageLayer setBorderWidth:1];
[imageLayer setBorderColor:[[UIColor colorWithRed:195.0 green:195.0 blue:195.0 alpha:1.0] CGColor]];
[imageLayer setMasksToBounds:YES];
我没有碰这些代码,但是当我跑了,我对VC的背景是正确设置,但我的按钮不见了。我仍然可以利用它应该进入配置文件屏幕的空间,并且通过从屏幕边缘录制来查找打击框的位置来判断其尺寸是否合适。
我尝试使用[_profileImageButton setClipsToBounds:YES]
以及导致相同的结果。我注意到setMasksToBounds
调用,图像在那里,正确定位和大小,但当然不圆。
所以,我补充说,注释了NSLog。不过,首先我打印了_profileImageButton.frame.size.width
。当我这样做时,我得到了1000.0,但个人资料图像仍然消失。
然后,我决定查看按钮上的框架大小和按钮上的imageView是否相同,因此我将它设置为上面所示的内容,尽管没有注释掉......大小为0 ,但是,配置文件按钮按预期显示,圆形且大小合适!
注释掉NSLog反转了这一点。我不知道是什么原因造成的,或者为什么它一开始就停止工作,但是有人可以解释可能发生了什么,所以我可以确保它不会在我的代码中潜在破坏?
现在,这不是结束的事情。
当您按下按钮时,您将转到配置文件视图控制器。在这个VC上,我还以类似的方式显示配置文件Image,只是它只是一个UIImageView,而不是包装到按钮中。当菜单中的配置文件按钮被打破时,它也打破了配置文件中的配置文件映像。这一个,因为它没有一个单独的imageView,没有以同样的方式工作。我无法让它出现。
以下是我在该视图控制器上使用的非常类似的代码监听器,当我删除菜单的背景图像时,它曾经工作,但不再会。
NSLog(@"Building round layer. profileImageView width is: %f", _profileImageView.frame.size.width);
//Make the Profile Image round
CALayer *imageLayer = _profileImageView.layer;
[imageLayer setCornerRadius:_profileImageView.frame.size.width/2];
[imageLayer setBorderWidth:1];
[imageLayer setBorderColor:[[UIColor colorWithRed:195.0 green:195.0 blue:195.0 alpha:1.0] CGColor]];
[imageLayer setMasksToBounds:YES];
不知道怎么回事?
在viewDidLoad
方法您的意见有不正确的大小。将您的代码删除到viewDidLayoutSubviews
。它应该有所帮助。
在什么地方(方法)你四舍五入你的看法? – Volodymyr
像Reveal这样的东西在这里会很有帮助。当所有这些都发生时,你在Xcode的视图调试器中看到了什么? – jrturton
@Volodymyr这是在ViewController的viewDidLoad方法 –