草庐IT

ios - Swift:沿贝塞尔路径渐变(使用 CALayers)

我有一个使用CALayer对象设置的进度View的相对直接的实现。进度View本身是UIView的subview。这是设置进度环的代码:self.progressRingLayer=CAShapeLayer()letinnerRect=CGRectInset(bounds,CGFloat(self.lineWidth)/2,CGFloat(self.lineWidth)/2)letinnerPath=UIBezierPath(ovalInRect:innerRect)self.progressRingLayer.path=innerPath.CGPathself.progressRin

objective-c - 如何在 Swift 中调用 [self new]

这是一个用ObjectiveC编写的UIView扩展,可以轻松创建使用自动布局的View:+(id)autolayoutView{UIView*view=[selfnew];view.translatesAutoresizingMaskIntoConstraints=NO;returnview;}它调用[selfnew]所以UIView的任何子类都可以使用这个方法。我如何在Swift中实现这一目标? 最佳答案 好的,这似乎是解决方案。该类型必须有一个必需的初始值设定项和正确的参数列表(在本例中没有参数)。classSubView:U

Swift 闭包导致与 self 的强保留循环

我只想知道我是否理解正确。因此,根据苹果文档,当您创建一个闭包作为类实例的属性并且该闭包引用self(创建闭包属性的类)时,这将导致强保留循环,最终类和闭包都不会被释放.因此,用外行的话来说,这意味着如果我有一个具有属性的类并且该属性是一个闭包,并且一旦我在声明闭包属性的类中分配该闭包的功能,这将导致强保留循环。这是我的意思的一个简单示例classSomeViewController{letmyClosure:()->VoidpublicfuncsomeFunction(){....bunchofcodemyClosure={self.dismiss(blahBlahBlah)}}}这

快速守护 self

我正在以这种方式快速跳弱强舞:dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT,0),{[weakself]inguardlet`self`=selfelse{return}self.doSomething(1)})在此之前,我使用的是strongSelf而不是`self`。在一个网站上,我看到我可以使用这个字符`。但是这个角色在Swift中做了什么?没有这个我不能分配给自己。为什么这行得通?使用它是一种好的做法吗? 最佳答案 一些更新(我不会在这里提及何时使用它,

ios - Swift - 确定哪个按钮被按下了开关

我有4个按钮调用一个函数。根据按下哪个按钮,我需要将按钮隐藏在按下后调用的函数中。我不知道按下了哪个按钮,所以我尝试为4个按钮中的每一个分配标签以通过标签识别它们并使用开关我试过了switchsender.tag{case1:self.button1.hidden=truecase2:self.button2.hidden=truecase3:self.button3.hidden=truecase4:self.button4.hidden=true}但这不起作用编译器说使用未解析的标识符“发件人”如何正确地做到这一点?编辑:整个函数ifself.allowMistakeVar{let

ios - 你如何在 Swift 4 中创建文本字段填充?

我有一个名为的文本框nameTextField我用圆角nameTexfield.layer.cornerRadius=5现在,文本字段中的文本触及左侧。我想在文本和边框之间创建填充。我找到的每篇文章都使用cgRect,但Swift不再支持它。如果可以,请提供正确的代码,如果可以,请解释答案。感谢您的帮助!如果有的话,我还需要知道将代码放在哪里。 最佳答案 在UITextField的“左”、“右”或“两侧”添加填充的自定义方式。第1步:-添加此UITextfield扩展extensionUITextField{enumPaddingS

ios - 关闭推送的 View Controller

所以我有一个显示如下的ViewController:funcshowProfileForTrainer(trainer:Trainers){letviewPTProfileVC=ViewPTProfileVC()viewPTProfileVC.trainer=trainerself.navigationController?.pushViewController(viewPTProfileVC,animated:true)}但是当试图关闭View时,我无法让它工作。它在导航栏中有一个后退按钮,功能正常,但是当试图通过按钮关闭View时,它什么都不做。我目前尝试过:funchandleM

ios - 无需在 View Controller 中使用 loadFromNib 即可快速使用 Nib 自定义 UIView

我一直使用loadNibNamed方法将自定义View加载到ViewController中,但现在我试图避免在自定义View之外调用该方法以使其更易于重用,这样如果其他人使用我的自定义View他只将需要在没有loadFromNib的情况下实例化View,例如:varmyView:MyView=MyView()将此View添加到ViewController的View中就足够了,自定义View将在其内部加载Nib。我试图在Swift中做到这一点,在ObjC中我发现了类似这个答案之一的代码:UIViewandinitWithFrameandaNIBfile.HowcanigettheNIBf

ios - 即使应用程序被杀死/终止,位置更新

我试图在所有状态下获取位置更新,即使应用程序被终止/终止/暂停。我在xcode中启用了后台获取并实现了以下代码(使用引用“Capturelocationinallstatesapp”)。但是当我终止应用程序时,它在类AppDelegate上给出了一条红线。我不明白这里的问题是什么。我在这里使用问题“GettinglocationforaniOSappwhenitisinthebackgroundandevenkilled”的解决方案完成了此操作,但它在ios9中不起作用。请帮助我或告诉我其他解决方案。更新代码-classAppDelegate:UIResponder,UIApplica

swift - 如何用固定的开始到结束位置替换 panGestureDidMove

我一直在使用UIPanGestureRecognizer来识别触摸,但我想用动画的固定开始到结束位置替换它。请看下面的代码:panGestureDidMove:funcpanGestureDidMove(gesture:UIPanGestureRecognizer){ifgesture.state==.Ended||gesture.state==.Failed||gesture.state==.Cancelled{}else{letadditionalHeight=max(gesture.translationInView(view).y,0)letwaveHeight=min(add