1

何かが欠けているかどうかはわかりませんが、単純なタスクであるべきものが機能したくないだけです。UIViewin にドロップ シャドウを追加しようとしていiOS 6ます。ストーリーボードと自動レイアウトを使用しています。UIView絵コンテのシーンを白背景で描いています。次に、それをにリンクしIBOutletます。

私の .h ファイルで、IBOutletと プロパティを宣言します

#import <UIKit/UIKit.h>

@interface LoginViewController : UIViewController {

    IBOutlet UIView *_loginPanel;

}

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

@end

そして私の.miで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しかし、ストーリーボードで定義した白だけで影ができません。

どんな助けでも大歓迎です。

ありがとう、

リチャード

4

1 に答える 1

1

多分あなたはこの行を変更することができます:

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

と :

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

もちろん、shadowPath行の「.CGPath」を削除します。

おそらく、viewDidAppear メソッドでこれを作成して、サイズ変更の問題ではないかどうかを確認できます。

于 2012-11-21T13:43:48.680 に答える