ios - 阴影没有完全扩展 UIView 的宽度

标签 ios objective-c uiview

我在 UIView 上应用背景阴影,使它看起来像是在背景“之上”(这是一个 MapView),但是阴影在更宽的 iPhone 6 和 6 上没有完全延伸+ 屏幕,即使我正在应用它的 UIView 也是如此。

viewDidLoad 中,我使用以下代码将阴影应用于 UIView:

CALayer *layer = self.view_detailview.layer;
layer.shadowOffset = CGSizeMake(1, 1);
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.shadowRadius = 4.0f;
layer.shadowOpacity = 0.80f;
layer.shadowPath = [[UIBezierPath bezierPathWithRect:layer.bounds] CGPath];

在我的 Storyboard 中,我设置了一个约束来强制 UIView 宽度与 superviews 宽度相匹配,该宽度可以正常工作,没有任何问题或警告。但是当我在 6 或 6+ 上运行我的应用程序时,我发现阴影没有像这样完全扩展:

Screenshot of how shadow doesn't extend

我可以通过将其背景颜色设置为明显的颜色并看到它填满屏幕来验证 UIView 确实使用了整个宽度。

最佳答案

问题是当 View 尚未正确布局时您正在使用边界值。

viewDidLayoutSubviews(如果使用 View Controller )或 layoutSubviews(如果使用独立 View )中设置阴影。在第二种情况下,不要忘记调用 [super layoutSubviews]

或者根本不更改 shadowPath。没有那条线它不工作吗?

关于ios - 阴影没有完全扩展 UIView 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26090078/

相关文章:

ios - 类型 'ViewController' 不符合协议(protocol) 'MCSessionDelegate'

ios - 休息套件 0.20 : Customising what is sent to the server on PUT/POST with foreign key relationships

objective-c - OCMock - 是否需要调用 "verify"来断言在模拟对象上调用了一个方法?

ios - 在 objective-c 中翻转缩放和旋转的 uiview

ios - 如何在 Swift 中为 UIView 子类编写自定义初始化?

ios - 启动swift后复制数据库

ios - 在 SWIFT 中收到 "<null>"作为来自 api 的响应时崩溃

objective-c - 当我有目录路径、文件名和扩展名时,如何构建完整且安全的文件路径?

ios - objective-C UITabBarItem : Custom Icon Color for All States with UIImageRenderingModeAlwaysOriginal

ios - 检测 UIView 在另一个 UIView 中的移动