我有一个关于将帧缩放到特定大小的问题。
我有一个CGRect,并将其调整为特定的CGSize。
我想将此CGRect的中心与我的rescale值成比例。
答案 0 :(得分:0)
如果你正在修改UIView
,你可以采用这种方法:
CGPoint previousCenter = view.center;
// Set width and height here:
view.frame = CGRectMake(view.frame.origin.x,view.frame.origin.y, width, height);
view.center = previousCenter;
在改变视图大小的同时保持中心点。
我对你的问题感到有点困惑,所以我可能没有正确回答。如果您使用CGAffineTransform
进行扩展,正如您的代码所示,这完全是另一回事。
答案 1 :(得分:0)
您可以使用CGRectInset(rect, x, y)
。这将按x
和y
插入CGRect,并按x
和y
推送原点。 (https://developer.apple.com/library/ios/documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html#//apple_ref/c/func/CGRectInset)
CGSize targetSize = CGSizeMake(100.0f, 100.0f);
CGRect rect = CGRectMake(50.0f, 50.0f, 200.0f, 200.0f);
rect = CGRectInset(rect, roundf((rect.size.width - targetSize.width) / 2.0f), roundf((rect.size.height - targetSize.height) / 2.0f);
编辑:请注意,我正在使用两种尺寸之间的差异,减半。我的理由是CGRectInset
会影响整个矩形。我的意思是......
CGRect rect = CGRectMake(0, 0, 10, 10);
rect = CGRectInset(rect, 2, 2);
rect is now a CGRect with (2, 2, 6, 6)