Как получить среднюю точку происхождения?

Как получить начало координат x1 и x2?

self.spinner=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    float x1,x2,y1,y2;
    x1=self.view.frame.origin.x;
    x2=self.view.frame.origin.x;
    y1=self.view.frame.origin.y;
    y2=self.view.frame.origin.y;



    self.spinner.center=CGPointMake((x1+x2)/2,(y1+y2)/2);

     [self.spinner startAnimating];
     [self.view addSubview:self.spinner];

у меня есть счетчик, я пытаюсь поместить счетчик в среднюю точку, я знаю концепцию, но как получить это начало координат x1 и x2, я действительно запутался с этим ...


person Kishore Kumar    schedule 14.09.2015    source источник
comment
Но x1 == x2 и y1 == y2 так что середины нет!   -  person trojanfoe    schedule 14.09.2015
comment
я знаю только, как получить x origin, как получить x2 origin @trojanfoe   -  person Kishore Kumar    schedule 14.09.2015
comment
У вас есть происхождение x2 (то же самое, что и x1). Что такое x?   -  person trojanfoe    schedule 14.09.2015
comment
извините, x1, я упомянул ... @trojanfoe   -  person Kishore Kumar    schedule 14.09.2015
comment
Это то же самое, что и x1!   -  person trojanfoe    schedule 14.09.2015
comment
Если вы пытаетесь разместить счетчик в центре его супервизора, проверьте это.   -  person albertamg    schedule 14.09.2015
comment
@albertamg я неправильно понял происхождение x и y, теперь я разобрался с этой концепцией и делаю по стандарту, большое спасибо .....   -  person Kishore Kumar    schedule 14.09.2015
comment
@trojanfoe большое спасибо, что упомянул мою неправоту ..... теперь я понял концепции происхождения :)   -  person Kishore Kumar    schedule 14.09.2015


Ответы (3)


я думаю, вы не доводите до ума

float x1,x2,y1,y2;
x1=self.view.frame.origin.x;
x2=self.view.frame.origin.x;
y1=self.view.frame.origin.y;
y2=self.view.frame.origin.y;

Если вам нужно поместить индикатор в центр поля зрения,

self.spinner.center = self.view.center;
person Tushar J.    schedule 14.09.2015
comment
у меня это работает, но как получить происхождение, на самом деле я хотел бы знать, что я приму ваш ответ через 2 минуты .. - person Kishore Kumar; 14.09.2015
comment
Если вы все еще хотите получить центр кадра, есть другой способ, например, CGFloat midX = CGRectGetMidX(self.view.frame); ИЛИ CGFloat midX = self.view.frame.width / 2.0; Надеюсь, он вам поможет. - person Tushar J.; 14.09.2015
comment
Ооо... извините за последний комментарий. Я думал, вам нужен другой способ вычисления центра. Чтобы вычислить происхождение, вы делаете правильно. self.view.frame.origin.x; правильно. Но почему вы принимаете его дважды? Это вообще не имеет смысла. Это как 0+0/2.0!! - person Tushar J.; 14.09.2015

Вы неправильно поняли, как представлен прямоугольник, ваша формула основана на использовании двух углов, но NSRect сохраняет один угол, origin, а также ширину и высоту, size - см. документацию. Существуют также удобные макросы для вычисления различных свойств (максимальная координата и т. д.) прямоугольника — см. документацию, указанную выше.

Однако для этой конкретной задачи вы можете использовать свойство center UIView, что избавит вас от математических вычислений.

person CRD    schedule 14.09.2015

NSRect

создается с

x,y,width & height

Он также имеет свойство center, которое является

CGPoint

. Чтобы разобраться вручную,

center.x = origin.x + size.width/2.

.. И аналогично для

center.y

.

person bilo-io    schedule 15.09.2015