标签: uiview

向我的UIView添加投影的最佳方法是什么

我试图为彼此叠加的视图添加投影,视图崩溃允许其他视图中的内容被看到,在这种情况下我想保持view.clipsToBounds开启,以便当视图崩溃时,他们的内容被剪裁.

这似乎使我很难向图层添加阴影,因为当我打开clipsToBounds阴影时也会被剪裁.

我一直试图操纵view.frameview.bounds为了向框架添加一个投影,但允许边界足够大以包含它,但是我没有运气.

这是我用来添加阴影的代码(这只适用于clipsToBoundsOFF,如图所示)

view.clipsToBounds = NO;
view.layer.shadowColor = [[UIColor blackColor] CGColor];
view.layer.shadowOffset = CGSizeMake(0,5);
view.layer.shadowOpacity = 0.5;
Run Code Online (Sandbox Code Playgroud)

以下是应用于最轻的灰色层的阴影的屏幕截图.希望这能让我知道如果clipsToBounds关闭,我的内容将如何重叠.

影子应用.

如何为我添加阴影UIView并保持剪辑内容?

编辑:只是想补充说我还使用了带阴影的背景图像,这确实很有效,但是我仍然想知道最好的编码解决方案.

shadow uiview ios cliptobounds

103
推荐指数
5
解决办法
13万
查看次数

clipsToBounds如何工作?

我想知道如何使用该UIView属性clipsToBounds.

官方文档说明如下:

clipsToBounds 属性

一个布尔值,用于确定子视图是否仅限于视图的边界.

讨论
设置此值会YES导致子视图被剪切到接收器的边界.如果设置为NO,则不会剪切其帧超出接收器可见边界的子视图.默认值为NO.

但我不清楚这究竟意味着什么.我该怎么用clipsToBounds?将此属性设置为YES完全有什么后果?或者NO

frame uikit uiview bounds ios

101
推荐指数
2
解决办法
6万
查看次数

如何控制阴影传播和模糊?

我在草图中设计了UI元素,其中一个具有模糊1和传播0的阴影.我查看了视图图层属性的文档,图层没有任何名为spread或blur的东西,或者任何等效的东西(唯一的控件是only shadowOpacity)如何控制模糊和传播之类的东西?

编辑:

以下是Sketch中的设置: 草图阴影设置


这就是我希望我的阴影看起来像:

暗影想要




这就是目前的样子:

目前的影子
注意,你必须点击图片才能真正看到阴影.

我的代码如下:

func setupLayer(){
    view.layer.cornerRadius = 2
    view.layer.shadowColor = Colors.Shadow.CGColor
    view.layer.shadowOffset = CGSize(width: 0, height: 1)
    view.layer.shadowOpacity = 0.9
    view.layer.shadowRadius = 5
}
Run Code Online (Sandbox Code Playgroud)

core-graphics uiview ios swift

100
推荐指数
4
解决办法
4万
查看次数

UIView和CALayer有什么区别?

两者都具有大多数相同的属性,都支持不同类型的动画,两者都代表不同的数据.UIView和CALayer有什么区别?

calayer uikit uiview ios

99
推荐指数
4
解决办法
3万
查看次数

CALayers没有根据UIView的界限变化调整大小.为什么?

我有一个在其图层中添加了UIView大约8个不同的CALayer子图层.如果我修改视图的边界(动画),那么视图本身会缩小(我用a检查过backgroundColor),但是子图层的大小保持不变.

怎么解决这个?

iphone objective-c calayer uiview ios

98
推荐指数
6
解决办法
7万
查看次数

正确的加载UIView子类的Nib的方法

我知道之前已经问过这个问题,但答案是矛盾的,我很困惑,所以请不要激怒我.

我希望UIView在我的应用程序中有一个可重用的子类.我想用nib文件描述接口.

现在让我们说它是一个加载指示器视图,其中包含一个活动指示器.我希望在某个事件上实例化此视图并激活到视图控制器的视图.我可以用编程方式描述视图的界面没有问题,以编程方式创建元素并在init方法中设置它们的框架等.

我怎么能用笔尖做到这一点?维护界面构建器中给出的大小而不必设置框架.

我已经设法这样做,但我确定它是错的(它只是一个带有选择器的视图):

 - (id)initWithDataSource:(NSDictionary *)dataSource {
        self = [super init];
        if (self){
            self = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", [self class]] owner:self options:nil] objectAtIndex:0];
            self.pickerViewData = dataSource;
            [self configurePickerView];
        }
        return self;
    }
Run Code Online (Sandbox Code Playgroud)

但是我覆盖了自己,当我实例化它时:

FSASelectView *selectView = [[FSASelectView alloc] initWithDataSource:selectViewDictionary];
    selectView.delegate = self;

    selectView.frame = CGRectMake(0, self.view.bottom + 50, [FSASelectView width], [FSASelectView height]);
Run Code Online (Sandbox Code Playgroud)

我必须手动设置框架而不是从IB中拾取它.

编辑:我想在视图控制器中创建此自定义视图,并有权控制视图的元素.我不想要一个新的视图控制器.

谢谢

编辑:我不知道这是不是最好的做法,我确定不是,但这就是我做的方式:

FSASelectView *selectView = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@",[FSASelectView class]] owner:self options:nil] objectAtIndex:0];
    selectView.delegate = self;
    [selectView configurePickerViewWithData:ds];
    selectView.frame = CGRectMake(0, …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c xib uiview ios

98
推荐指数
5
解决办法
10万
查看次数

获取对iOS应用程序中最顶层视图/窗口的引用

我正在创建一个可重用的框架,用于在iOS应用程序中显示通知.我希望将通知视图添加到应用程序中其他所有内容的顶部,有点像UIAlertView.当我初始化侦听NSNotification事件并在响应中添加视图的管理器时,我需要获得对应用程序中最顶层视图的引用.这就是我现在所拥有的:

_topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
Run Code Online (Sandbox Code Playgroud)

这适用于任何iOS应用程序,还是更安全/更好的方式来获得顶视图?

objective-c uiview uiwindow ios

97
推荐指数
4
解决办法
10万
查看次数

我什么时候可以激活/停用布局约束?

我在IB中设置了多组约束,我想根据某些状态以编程方式在它们之间切换.有一个constraintsA出口集合,所有出口集合都标记为从IB安装,constraintsB出口集合全部在IB中卸载.

我可以编程方式在两个集之间切换,如下所示:

NSLayoutConstraint.deactivateConstraints(constraintsA)
NSLayoutConstraint.activateConstraints(constraintsB)
Run Code Online (Sandbox Code Playgroud)

但是......我无法弄清楚何时这样做.看起来我应该能够做到这一点viewDidLoad,但我不能让它工作.我已经尝试过调用view.updateConstraints()view.layoutSubviews()在设置约束后,但无济于事.

我确实发现,如果我设置约束,viewDidLayoutSubviews一切都按预期工作.我想我想知道两件事......

  1. 为什么我会出现这种行为?
  2. 是否可以从viewDidLoad激活/停用约束?

uiview ios autolayout nslayoutconstraint swift

97
推荐指数
7
解决办法
7万
查看次数

检查子视图是否在视图中

我在做一个应用程序,我一个子视图添加到使用视图addSubview:IBAction.以同样的方式,当IBAction再次触摸带有该按钮的按钮时,应该调用removeFromSuperview添加在该子视图上的子视图IBAction:

PSEUDO CODE

-(IBAction)showPopup:(id)sender 
{
    System_monitorAppDelegate *delegate = (System_monitorAppDelegate *)[[UIApplication sharedApplication] delegate];
    UIView *rootView = delegate.window.rootViewController.view;

    if([self popoverView] is not on rootView) 
    { 
        [rootView addSubview:[self popoverView]];
    } 
    else 
    {
        [[self popoverView] removeFromSuperview];
    }

}
Run Code Online (Sandbox Code Playgroud)

cocoa-touch uikit uiview ios

93
推荐指数
3
解决办法
8万
查看次数

如何创建UIView反弹动画?

我有一个名为UIView的以下CATransition finalScoreView,它使它从顶部进入屏幕:

CATransition *animation = [CATransition animation];
animation.duration = 0.2;
animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromBottom;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

[gameOver.layer addAnimation:animation forKey:@"changeTextTransition"];
[finalScoreView.layer addAnimation:animation forKey:@"changeTextTransition"];
Run Code Online (Sandbox Code Playgroud)

如何使它在它下降后反弹一次然后保持静止?它应该仍然从顶部进入屏幕,但在它关闭时反弹.

任何帮助将不胜感激,谢谢!

iphone animation uikit uiview ios

88
推荐指数
3
解决办法
8万
查看次数