UIView带方向的阴影问题

时间:2013-02-16 07:58:59

标签: uiview orientation layer uibezierpath dropshadow

我有UiTableView within UiView。我想将corner radius & shadow设置为UIView。 我使用此代码来提供shadow with corner及其工作正常。

myView.backgroundColor = [UIColor clearColor];
[myView.layer setCornerRadius:10.0f];
[myView.layer setBorderColor:[UIColor lightGrayColor].CGColor];
[myView.layer setBorderWidth:1.0f];
[myView.layer setShadowColor:[UIColor blackColor].CGColor];
[myView.layer setShadowOpacity:0.8];
[myView.layer setShadowRadius:3.0];
[myView.layer setShadowOffset:CGSizeMake(2.0, 2.0)];

// below line is for smooth scrolling
[myView.layer setShadowPath:[UIBezierPath bezierPathWithRect:myView.bounds].CGPath];`

Portrait mode一切正常。我的应用程序同时支持Orientation,我们正在使用Autoresizing property个。当我更改方向Shadow is displaying according to frame of Portrait mode时。如何管理这两个方向。

知道如何根据Orientation OR bound更改setShadowPath吗?

2 个答案:

答案 0 :(得分:0)

iOS6轮换 试试这段代码,让我知道它是否适合你

 - (BOOL)shouldAutorotate
{
    if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
    {
    self.view.backgroundColor = [UIColor redColor];
    }
else if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation))
   {
    self.view.backgroundColor = [UIColor blackColor];
   }

return YES;
} 

答案 1 :(得分:0)

我找到了自己的解决方案。我有一个创建的方法- (void) viewWithEffects: (UIView*) myView {// copy the shadow code from the question}。现在我将此方法称为- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{}

因此,当方向更改didRotateFromInterfaceOrientation时,会根据Corner with Shadow effects.您的视图将Autoresize阴影设置为您的视图。如果你的应用程序不支持这两个方向而不需要这样做。只需在viewdidload or viewwillAppear上拨打一个。我希望它会有所帮助。