Имам въпрос относно операцията по мащабиране на рамка до определен размер.
Имам CGRect и бих го преоразмерил до конкретен CGSize.
Бих преместил центъра на този CGRect пропорционално на моята стойност за повторно мащабиране.
Имам въпрос относно операцията по мащабиране на рамка до определен размер.
Имам CGRect и бих го преоразмерил до конкретен CGSize.
Бих преместил центъра на този CGRect пропорционално на моята стойност за повторно мащабиране.
Ако случайно модифицирате 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
за мащабиране, както показват маркерите ви, това е съвсем друг въпрос.
Можете да използвате CGRectInset(rect, x, y)
. Това ще вмъкне CGRect от x
и y
и ще вмъкне началото от 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
ще засегне целия rect. Това, което имам предвид с това е...
CGRect rect = CGRectMake(0, 0, 10, 10);
rect = CGRectInset(rect, 2, 2);
rect is now a CGRect with (2, 2, 6, 6)
origin.x
,origin.y
,size.width
,size.height
. А CGSize е самоwidth
иheight
. Има редица функции, дефинирани за работа с тях, но понякога е по-ясно (и по-лесно за запомняне) да работите директно върху фигурите. - person Hot Licks   schedule 07.09.2013