小编jer*_*ter的帖子

SwiftUI-如何更改视图的背景颜色?

我开始尝试SwiftUI,但感到惊讶的是,更改A的背景颜色似乎并不简单View。您如何使用SwiftUI呢?

background view modifier background-color swiftui

39
推荐指数
11
解决办法
2万
查看次数

使用Bezier Path作为剪贴蒙版

我想知道是否可以将视图剪切到Bezier路径.我的意思是我希望能够仅在封闭的贝塞尔路径内的区域中看到视图.原因是我有一个不规则形状的轮廓,我想逐渐用从上到下的纯色填充形状.如果我能够使某个视图仅在路径中可见,那么我可以简单地创建一个我想要的颜色的UIView,然后根据需要更改其框架的y坐标,有效地填充形状.如果有人对如何实现这一点有任何更好的想法,将不胜感激.对于记录,形状的填充将与用户手指的y值匹配,因此它不能是连续动画.谢谢.

更新(很长一段时间后):

我尝试了你的答案,Rob,除了一件事,它的效果很好.我的目的是在掩模保持在屏幕上的相同位置时移动视图被遮罩.这样我就可以给人一种被视图"填满"面具的印象.问题在于,根据你的答案编写的代码,当我移动视图时,掩码随之移动.我明白这是可以预料到的,因为我所做的就是将它作为视图的掩码添加,因此如果它与之相关联的东西移动,它将会移动.我尝试添加掩码作为superview的子层,以便它保持放置,但这有非常奇怪的结果.这是我的代码:

self.test = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
self.test.backgroundColor = [UIColor greenColor];

[self.view addSubview:self.test];

UIBezierPath *myClippingPath = [UIBezierPath bezierPath];
[myClippingPath moveToPoint:CGPointMake(100, 100)];
[myClippingPath addCurveToPoint:CGPointMake(200, 200) controlPoint1:CGPointMake(self.screenWidth, 0) controlPoint2:CGPointMake(self.screenWidth, 50)];
[myClippingPath closePath];


CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = myClippingPath.CGPath;

self.test.layer.mask = mask;

CGRect firstFrame = self.test.frame;
firstFrame.origin.x += 100;
[UIView animateWithDuration:3 animations:^{
    self.test.frame = firstFrame;
}];
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

animation clipping objective-c ios

22
推荐指数
1
解决办法
2万
查看次数

音频在YouTube播放器助手应用中无效

我正在编写一个应用程序,使用YouTube帮助程序库(https://developers.google.com/youtube/v3/guides/ios_youtube_helper#controlling_playback)播放来自YouTube的视频.

视频运行良好,但播放时没有音频.我不熟悉在应用程序中使用音频,所以我很可能在xcode项目中需要更改一个非常简单的设置,但我不知道它是什么.任何帮助是极大的赞赏.

youtube audio video xcode plist

1
推荐指数
1
解决办法
795
查看次数

二元运算符'=='不能应用于两个'Equatable'操作数......什么?

您可以在下面的图像中看到我正在尝试扩展Collection协议以包含一个被调用的方法removingDuplicates,该方法应该完全按照它所说的去做.编译器显示的错误似乎与Equatable协议的定义直接相矛盾.这是一个错误还是我误解了什么?

在此输入图像描述

xcode protocols swift equatable

-2
推荐指数
1
解决办法
959
查看次数