【问题标题】:simplest (rectangular) drop shadow for an UIViewUIView 的最简单(矩形)投影
【发布时间】:2012-07-23 10:08:18
【问题描述】:

我见过很多 sn-ps:对于像投影这样简单的东西来说太复杂了,需要子类化 UIView 并使用quartz2d 调用,或者我无法让它们工作。

我只想在我作为子视图添加到另一个视图的视图上执行此操作(子视图取自我刚刚分配的另一个视图控制器 - 我知道这可能不太好但是哦),没有 IB 或任何事物。最简单/最被接受的方法是什么?如果我希望它在 iOS 4 上运行会有所不同吗?

【问题讨论】:

    标签: ios cocoa uiview shadow


    【解决方案1】:

    就像导入<QuartzCore/QuartzCore.h> 并使用类似的sn-p 一样简单,如下所示:

    self.viewAboutContainer.layer.shadowColor = [[UIColor blackColor] CGColor];
    self.viewAboutContainer.layer.shadowOpacity = 0.7;
    self.viewAboutContainer.layer.shadowRadius = 4.0;
    self.viewAboutContainer.layer.shadowOffset = CGSizeMake(5.0f, 5.0f);    
    self.viewAboutContainer.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.viewAboutContainer.bounds].CGPath;
    

    【讨论】:

    • 还要确保 self.viewAboutContainer.clipsToBounds = NO。否则,阴影将落在视图之外并被剪裁。
    • @Brayden 我已经使用“[myview.layer setShadowPath:[UIBezierPath bezierPathWithRect:myview.bounds].CGPath];”解决了性能问题。阴影和圆角半径在人像模式下运行良好,滚动流畅。但我的应用程序在两种模式下都受支持,当我更改方向阴影时,阴影无法正常工作(根据纵向视图框架的阴影显示)。所以知道如何解决这个问题吗?
    • @VictorEngel viewAboutContainer 是 any UIView 或任何继承 UIView(即 UIImageView)的名称。该名称只是一个占位符。
    • @KenM.Haggerty 一整天我都在摸不着头脑....但你终于成功了 :)
    • @KenM.Haggerty,设置clipsToBounds = NO 仅在您的视图(您要在其上应用阴影)是其他视图的子视图时才需要。
    猜你喜欢
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2015-11-01
    • 1970-01-01
    相关资源
    最近更新 更多