How to remove the “fuzzy” drop shadow in the UIPopoverController

烈酒焚心 提交于 2019-12-22 07:25:30

问题


I don't want the drop shadow when the UIPopoverController's view appears. Is there a way to remove this drop shadow look?


回答1:


Not straight forward, but since iOS 5, you can make your own custom popover background using UIPopoverBackgroundView.

See the answer for this question: Using UIPopoverBackgroundView class. It's pointing to a good tuto.

Then, in the initWithFrame of your UIPopoverBackgroundView implementation, you can use a clearColor for the drop shadow. Using offset and radius did not work for me.

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        self.layer.shadowColor = [[UIColor clearColor] CGColor];
    }
    return self;
}



回答2:


The shadow is an attribute of the popover view's layer. If you could get access to the layer, you could set it's shadow radius to 0.0 and shadow offset to {0.0, 0.0}. However, it looks like the view must be a private ivar of the popover controller, so there's not an easy way to get to it. Moreover, if you're looking to distribute this app through the app store, using a private ivar and changing the look of standard UI elements both are likely to get your app rejected.




回答3:


You just have to use your custom UIPopoverBackgroundView and there implement this function:

+ (BOOL)wantsDefaultContentAppearance {
    return NO;
}


来源:https://stackoverflow.com/questions/5235236/how-to-remove-the-fuzzy-drop-shadow-in-the-uipopovercontroller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!