我开始尝试SwiftUI,但感到惊讶的是,更改A的背景颜色似乎并不简单View。您如何使用SwiftUI呢?
我想知道是否可以将视图剪切到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)
谢谢你的帮助.
我正在编写一个应用程序,使用YouTube帮助程序库(https://developers.google.com/youtube/v3/guides/ios_youtube_helper#controlling_playback)播放来自YouTube的视频.
视频运行良好,但播放时没有音频.我不熟悉在应用程序中使用音频,所以我很可能在xcode项目中需要更改一个非常简单的设置,但我不知道它是什么.任何帮助是极大的赞赏.
您可以在下面的图像中看到我正在尝试扩展Collection协议以包含一个被调用的方法removingDuplicates,该方法应该完全按照它所说的去做.编译器显示的错误似乎与Equatable协议的定义直接相矛盾.这是一个错误还是我误解了什么?