user2117204
user2117204

Reputation:

How to set a label at the top center

I want to set a label in the top center of the view, I've already tried this

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(self.myView.center.x, 25, 92, 46)];

But its not actaully in the center as I want, here is how it looks like: http://i49.tinypic.com/e17mty.png

And I want the middle of the label, in the x center, and not the beginning of the label in the center.

Upvotes: 2

Views: 872

Answers (8)

Hermann Klecker
Hermann Klecker

Reputation: 14068

It does exactly what you programmed. Unfortunately there is always some basic math involved in UI programming.

One possible solution: Initialize it with some frame of any position but with the right size. Then set the lable views' center property accordingly.

[label setCenter:CGPointMake(self.myView.center.x, 25)];

Or simply set the frame in a way, that it takes all the space from myView's left to right and just set the text alignment to NSTextAlignmentCenter.

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 25, self.myView.frame.size.width, 46)];
label.textAlignment = NSTextAlignmentCenter;

Or calculate the top left corner accordingly and set the frame upon initialization. Use the center position and substract half of the width. Or use the full with of myView, substract the with and then devide by 2.

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(self.myView.center.x-92/2, 25, 92, 46)];

or

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake((self.myView.frame.width-92)/2, 25, 92, 46)];

Upvotes: 0

Inder Kumar Rathore
Inder Kumar Rathore

Reputation: 39988

Set it's center rather than setting rect

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 25, 92, 46)];
label.center = self.myView.center;
//Also if your frame is bigger than text then you can set this also
label.textAlignment = UITextAlignmentCenter;

Upvotes: 0

thxou
thxou

Reputation: 691

Try this:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 92, 46)];
label.center = CGPointMake(label.bounds.size.width / 2, 25);

or this:

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(self.myView.center.x - 46, 25, 92, 46)];

Upvotes: 0

Ravindhiran
Ravindhiran

Reputation: 5384

Try this

int x=(self.myView.frame.size.width-92)/2;
UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(x, 25, 92, 46)];
lbl.textAlignment=UITextAlignmentCenter;

Upvotes: 0

Balu
Balu

Reputation: 8460

Try like this ,

UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];
    lbl.textAlignment=UITextAlignmentCenter;

Upvotes: 1

βhargavḯ
βhargavḯ

Reputation: 9836

Using CGPointMake set center of label like this.

lblAppTitle.center= CGPointMake(self.view.bounds.size.width / 2, 25);
[lblAppTitle setTextAlignment:NSTextAlignmentCenter];

Upvotes: 0

arun.s
arun.s

Reputation: 1528

The easiest way is to make label's frame width equal to view's frame width and set the alignment of label to Center.

Hope this Helps !!!

Upvotes: 1

Girish
Girish

Reputation: 4712

Try to set the proper x-position as view.center.x - (labelwidth/2). Also set the textAlignment to center.

Upvotes: 0

Related Questions