有没有办法验证a CGPoint
是否在特定内部CGRect
.例如:我正在拖动一个UIImageView
,我想验证它的中心点CGPoint
是否在另一个内部UIImageView
我该怎么办?
我需要检查我的视图框架是否等于给定的CGRect.我尝试这样做:
CGRect rect = CGRectMake(20, 20, 20, 20);
if (self.view.frame == rect)
{
// do some stuff
}
Run Code Online (Sandbox Code Playgroud)
但是,我说错了Invalid operands to binary expression('CGRect' (aka 'struct CGRect') and 'CGRect')
.为什么我不能简单地比较两个CGRect
?
我有一个UIView,我在其中安排了UIButtons.我想找到那些UIButton的位置.
我知道buttons.frame
会给我这些职位,但只会就其直接的超级视图给我立场.
有没有办法我们可以找到这些按钮的位置,与UIButton superview的超级视图有关?
例如,假设UIView名为"firstView".
然后,我有另一个UIView,"secondView".这个"SecondView"是"firstView"的子视图.
然后我将UIButton作为"secondView"的子视图.
->UIViewController.view
--->FirstView A
------->SecondView B
------------>Button
Run Code Online (Sandbox Code Playgroud)
现在,有没有什么方法可以找到UIButton的位置,就"firstView"而言?
我有一个CGRect
,我想调整它UIEdgeInsets
.
似乎可能有一个内置函数可以做到这一点.我已经找了一个CGRectAdjustByInsets
或带有其他CGRect…
前缀的函数,但我没有找到任何东西.
我应该自己编码吗?
在钢琴应用程序中,我正在分配黑键的坐标.这是导致错误的代码行.
'blackKey'和'whiteKey'都是customViews
blackKey.center.x = (whiteKey.frame.origin.x + whiteKey.frame.size.width);
Run Code Online (Sandbox Code Playgroud) 这个问题最初是针对objective-c编程语言提出的.在撰写本文时,swift甚至还没有存在.
是否有可能只更改一个属性CGRect
?
例如:
self.frame.size.width = 50;
Run Code Online (Sandbox Code Playgroud)
代替
self.frame = CGRectMake(self.frame.origin.x,
self.frame.origin.y,
self.frame.size.width,
50);
Run Code Online (Sandbox Code Playgroud)
当然我明白这self.frame.size.width
是只读的所以我想知道如何做到这一点?
CSS ANALOGY 风险自负
对于那些熟悉的人来说CSS
,这个想法非常类似于使用:
margin-left: 2px;
Run Code Online (Sandbox Code Playgroud)
而不是必须改变整个价值:
margin: 5px 5px 5px 2px;
Run Code Online (Sandbox Code Playgroud) 我正在尝试为矩形实现动画以执行模态垂直滑动.但是,当我尝试编译代码时,我得到以下错误"Swift 4表达式类型'@value CGRect'是模糊的,没有更多上下文".我已将问题隔离到传递给CGRect init值的参数,但根据Apple的iOS文档,这些参数应该足以指定我需要设置动画的"帧"视图.
这是我的代码:
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
guard
let fromView = transitionContext.viewController(forKey: .from),
let toView = transitionContext.viewController(forKey: .to)
else {
return
}
let containerView = transitionContext.containerView
containerView.insertSubview((toView.view)!, belowSubview: (fromView.view)!)
let toFrame = transitionContext.finalFrame(for: toView)
let screenBounds = UIScreen.main.bounds
let bottomLeftCorner = CGPoint(x: 0, y: screenBounds.height)
let finalFrameForVC = CGRect(origin: bottomLeftCorner, size: screenBounds.size)
UIView.animate(withDuration: 2, delay: 1,
options: [], (using: transitionContext.finalFrame(for: fromView)),
animations: {
fromView.view.frame = finalFrameForVC
},
completion: { _ in
transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
})
}
Run Code Online (Sandbox Code Playgroud) 哪个更好用?我更喜欢CGRect.size.width,因为它看起来更好.但是,我的同事说CGRectGetWidth更好.
如何在UITextView周围添加边框(如UITextField)?我想允许用户键入多行,但遗憾的是UITextField不支持此行.有没有一种简单的方法可以在代码中执行此操作,还是需要在Photoshop中创建一个?
两者似乎在Swift中都是一样的.我们应该使用哪个?
CGRectZero
VS CGRect.zeroRect
GRectMake(1, 1, 1, 1)
vs CGRect(x: 1, y: 1, width: 1, height: 1)
UIEdgeInsetsMake(1, 1, 1, 1)
vsUIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
cgrect ×10
ios ×5
objective-c ×4
uiview ×3
cgrectmake ×2
swift ×2
border ×1
cgpoint ×1
cocoa-touch ×1
comparison ×1
iphone ×1
struct ×1
text ×1
uibutton ×1
uiedgeinsets ×1
uitextfield ×1
uitextview ×1