UIView Shadow不显示

时间:2012-11-21 12:20:26

标签: iphone objective-c ios ios6

我不确定我是否遗漏了什么,但是什么应该是一项简单的任务,只是不想工作。我正在尝试向UIView中的iOS 6添加投影。我正在使用故事板和自动布局。我正在故事板场景中绘制UIView,背景为白色。然后将其链接到IBOutlet

在我的.h文件中,我声明了IBOutlet和属性

#import <UIKit/UIKit.h>

@interface LoginViewController : UIViewController {

    IBOutlet UIView *_loginPanel;

}

@property (nonatomic, retain) IBOutlet UIView *_loginPanel;

@end

在我的.m import QuartzCore

#import <QuartzCore/QuartzCore.h>

Synthesize财产

@synthesize _loginPanel;

并在我的ViewDidLoad方法

中执行以下操作
- (void)viewDidLoad
{
    [super viewDidLoad];

    UIBezierPath *path = [UIBezierPath bezierPathWithRect:_loginPanel.bounds];

    _loginPanel.layer.masksToBounds = NO;
    _loginPanel.layer.shadowColor = [UIColor blackColor].CGColor;
    _loginPanel.layer.shadowOpacity = 0.7f;
    _loginPanel.layer.shadowOffset = CGSizeMake(-5.0f, -5.0f);
    _loginPanel.layer.shadowRadius = 8.0f;
    _loginPanel.layer.shadowPath = path.CGPath;
    _loginPanel.layer.shouldRasterize = YES;
}

但我只是在故事板中定义的白色UIView没有阴影。

非常感谢任何帮助。

谢谢,

理查德

1 个答案:

答案 0 :(得分:1)

也许你可以改变这一行:

UIBezierPath *path = [UIBezierPath bezierPathWithRect:_loginPanel.bounds];

with:

CGPathRef path = [UIBezierPath bezierPathWithRect:_loginPanel.bounds].CGPath;

并且当然会删除shadowPath行中的“.CGPath”。

也许您可以尝试在viewDidAppear方法中进行此操作,以查看它是否不是调整大小的问题。