无法在故事板上移动自定义 UIView
Posted
技术标签:
【中文标题】无法在故事板上移动自定义 UIView【英文标题】:Can not move custom UIView on storyboard 【发布时间】:2017-04-23 14:29:42 【问题描述】:我已经创建了自定义 UIView
import UIKit
@IBDesignable
class CategoryIcon: UIView
let pi:CGFloat = CGFloat(M_PI)
@IBInspectable var circleColor:UIColor = UIColor.green
@IBInspectable var width:CGFloat = 10
@IBInspectable var radius: CGFloat = 20
override func draw(_ rect: CGRect)
center = CGPoint(x:bounds.width/2 ,y:bounds.height/2)
let path = UIBezierPath(ovalIn: rect)
path.lineWidth = width
circleColor.setStroke()
path.stroke()
但是当我将它添加到故事板时,我把它放在父视图的左上角并不重要as you can see dots shows that view has moved but drawings are out of view and at the left top
问题是什么,如何解决?
【问题讨论】:
您是不是想说,无论您尝试将视图放在哪里,它始终处于相同的位置?或者当您尝试更改位置时位置是否会发生变化。 @joshLor 无论我移动它,它总是停留在父视图的左上角。但问题是,如果您查看我在表示视图边界的 8 个点中提供的链接表明它已经移动,实际上我绘制的内容不在父视图左上角的 UIView 中 你能展示一下你是如何在视图控制器中实现它的吗? 2 问题:1. 您是否有代码在您的视图中没有显示。 2. center 是关键字吗?因为我从来没有使用过你实现路径的方法。 @joshLor 不,当我尝试用圆弧画圆时,中心来自上一部分。我为 UIView 拥有的所有代码在课外或课外什么都不做。 【参考方案1】:从您的 draw(rect:)
方法中删除以下行:
center = CGPoint(x:bounds.width/2 ,y:bounds.height/2)
通常不建议在执行绘图代码时更改视图的状态。但在这种特殊情况下,您将根据其 bounds
的原点更改视图的 frame
的位置,通常为 (0, 0),除非您已修改界别处。目前尚不清楚您希望通过这样做来完成什么,但它实际上所做的是将视图移动到左上角。
【讨论】:
非常感谢。事情是我最初是用弧线绘制的,在这种情况下我使用的是中心。然后,当我切换到椭圆时,我没有删除它。不知怎的错过了。感谢您的帮助。以上是关于无法在故事板上移动自定义 UIView的主要内容,如果未能解决你的问题,请参考以下文章