是的,你提出的建议是有效的,但前提是CGRect
的原点是0,0,或者你的原点乘以因子。如果你不这样做,那么内部矩将会转移到右下角。
这里,如果你多个来源和规模都发生了什么:
如果不乘外RECT的起源,发生这种情况:
从你的问题,你试图达到的目标并不完全清楚。 如果你想放大一个CGRect
和(重新)中心是一个又一个,使用这些功能:
// center a CGRect in another one
static inline CGRect ALRectCenterInRect(CGRect outerRect, CGRect innerRect)
{
return CGRectMake(CGRectGetMidX(outerRect)-innerRect.size.width/2, CGRectGetMidY(outerRect)-innerRect.size.height/2, innerRect.size.width, innerRect.size.height);
}
// multiply each value of a CGRect with factor
// combine with CGRectIntegral() to prevent fractions (and the resulting aliasing)
static inline CGRect ALRectMultiply(CGRect rect, CGFloat factor)
{
return CGRectMake(rect.origin.x*factor, rect.origin.y*factor, rect.size.width*factor, rect.size.height*factor);
}
如何使用它们:
CGRect centeredInnerRect = ALRectCenterInRect(outerRect, innerRect);
CGRect multipliedRect = ALRectMultiply(someRect, 1.5);
然而,随着CGRect
小号打交道时,它通常是约UIView
s。如果你想在它的父居中一个UIView
,做到这一点:
someSubview.center = CGPointMake(CGRectGetMidX(someSuperview.bounds), CGRectGetMidY(someSuperview.bounds));
如果内视图具有相同的上海华盈的外观图,你可以简单地做到这一点,以居中的外观图:
innerView.center = outerView.center;
如果你不想你的问题得到解答,请不要把它们放在stackoverflow上。重现问题需要时间,提出解决方案并将其发布到此处。 – 2012-08-13 07:19:22
@AndreasLey - 我很感激你花时间写出答案,但是在我提到的两件事情中,你的回答都是错误的,即1)如果乘以相同的比例而不是正确的位置,你说“是的,你提议的作品”。然后我问道文档中是否有一个方法可以将矩形的所有值相乘,并且您为我手动地写出了一些很酷的方法,但它很简单,我可以自己做。如果苹果在图书馆里有一个,那就好奇。 – 2012-08-13 17:51:33
你的问题不明确。我为您的问题的原始版本和更新版本提供了正确的解决方案。仅仅因为它不是你所期望的并不意味着这是不正确的。另外,请记住,其他人会使用stackoverflow,他们会通过Google找到此页面。他们也想知道提议的解决方案是否有效。 – 2012-08-14 08:14:05