Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ViewDidLoad中UITextField的圆角仅影响左角_Ios_Swift_Autolayout_Uitextfield_Viewdidload - Fatal编程技术网

Ios ViewDidLoad中UITextField的圆角仅影响左角

Ios ViewDidLoad中UITextField的圆角仅影响左角,ios,swift,autolayout,uitextfield,viewdidload,Ios,Swift,Autolayout,Uitextfield,Viewdidload,我试图绕过两个UITextField的上下边界 ViewDidLoad()中的结果 viewDid中的结果出现 问题是viewdideappear在加载视图半秒后更改边框,这在我的情况下并不好 有人知道为什么在viewdiload方法中它只在左角四舍五入吗 有什么建议吗 *更新* viewdilayoutsubviews与viewdiload 这是我用来绕道而行的代码 extension UITextField { func roundCorners(corners:UIRectCo

我试图绕过两个UITextField的上下边界

ViewDidLoad()中的结果

viewDid中的结果出现

问题是
viewdideappear
在加载视图半秒后更改边框,这在我的情况下并不好

有人知道为什么在
viewdiload
方法中它只在左角四舍五入吗

有什么建议吗

*更新*

viewdilayoutsubviews
viewdiload

这是我用来绕道而行的代码

extension UITextField {
    func roundCorners(corners:UIRectCorner, radius: CGFloat) {
        let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        let mask = CAShapeLayer()
        mask.path = path.CGPath
        self.layer.masksToBounds = true
        self.layer.mask = mask
    }
}


您需要将层遮罩设置为其边界

self.layer.masksToBounds=true

编辑:

试着使用&而不是|,我相信这只是你使用或之后的第一个拐角

self.FirstTextField.roundCorners(UIRectCorner.TopRight & UIRectCorner.TopLeft, radius: 10.0)
self.SecondTextField.roundCorners(UIRectCorner.BottomLeft & UIRectCorner.BottomRight, radius: 10.0)

尝试将文本字段四舍五入的代码移动到
-(void)viewdilayoutsubviews

我曾经期望解决的一件事是在主队列上分派

dispatch_async(dispatch_get_main_queue(),{
      self.FirstTextField.roundCorners(UIRectCorner.TopRight | UIRectCorner.TopLeft, radius: 10.0)
      self.SecondTextField.roundCorners(UIRectCorner.BottomLeft | UIRectCorner.BottomRight, radius: 10.0)
});
现在我不知道这是否是低效的,但是的,它是有效的:D


如果有人有更好的答案,请发布:)

您是如何使用AutoLayout设置脚本中的文本字段的?您是否正确设置了约束条件?这是最有可能的问题约束都没问题我也这么想,但我发现问题出在四舍五入corners@Aladin查看更新名称结果,如
viewdiload
查看更新问题唯一的区别是
viewdilayoutsubviews
在@aladin将设备旋转一次时工作正常,您的意思是
viewdillayoutsubviews
@AladinViewControllers只有
viewWillLayoutSubviews
你是认真的,但不幸的是与
ViewDidLoad
viewDidLayoutSubviews
@AladinYou的想法与我的想法相同:),我以前尝试过,但它根本没有绕过任何角落:):天啊,我没有主意了,对不起!我也被困在这里无法理解,这让我大吃一惊,但没问题,我希望任何人能尽快帮助我,谢谢你的帮助:)@DavidLook我有一个主意,效果很好,检查我的回答如果你需要从主线程以外的地方更新UI(例如下载图像),这实际上是你应该做的。你以前在哪里调用过这个方法?我是在正常情况下调用它的,我也必须这样做,在
viewwillbeen
中进行更改没有做任何事情,而在
viewdidebeen
中加载界面后,看着一个图像形成一个圆圈是非常俗气的。谢谢你的解决方案。
dispatch_async(dispatch_get_main_queue(),{
      self.FirstTextField.roundCorners(UIRectCorner.TopRight | UIRectCorner.TopLeft, radius: 10.0)
      self.SecondTextField.roundCorners(UIRectCorner.BottomLeft | UIRectCorner.BottomRight, radius: 10.0)
});