How to set a label at the top center - ios

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:
And I want the middle of the label, in the x center, and not the beginning of the label in the center.

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 !!!

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

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)];

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

Using CGPointMake set center of label like this.
lblAppTitle.center= CGPointMake(self.view.bounds.size.width / 2, 25);
[lblAppTitle setTextAlignment:NSTextAlignmentCenter];

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

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)];

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;

Related

Adding a UILabel as a subview on top of a UITextView

I am trying to make a fake placeholder for a UITextView with a UILabel. Let's say there's a UITextView inside ViewController and this is what I do:
CGFloat frameWidth = self.postInputField.frame.size.width;
textViewPlaceholder = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, frameWidth, 200)];
textViewPlaceholder.text = POST_PLACEHOLDER;
textViewPlaceholder.textColor = [UIColor lightGrayColor];
[self.view addSubview:textViewPlaceholder];
[super viewWillAppear:animated];
}
And there's an unnecessary margin on top of the UILabel as shown below:
I could set the y value to be negative something but I want to make sure why this is happening. One thing that I do when the view controller is loaded is self.automaticallyAdjustsScrollViewInsets = NO; to get rid of the margin inside the UITextView, but it shouldn't matter.
The exact x y values that work are (4, -16) for the UILabel.
I think the problem is the height of UILabel:
textViewPlaceholder = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, frameWidth, 200)];
The height is too large. Try to reduce it. And using background color to see more.

Cant center UILabel in titleView of navigationItem iOS8

Im having trouble setting a programmatically allocated UILabel to be centered in my NavigationItem's titleView. Im even setting the NSAlignment to be NSAlignmentCenter. Here's an image of what it looks like:
As you can see.. I have no right UIBarButtonItem in use, but this shouldn't be keeping the text from being centered? Here's the code, in the viewDidLoad:
//Set the title of navBar----------
UILabel *navTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 40)]; //0 0 320 10
navTitleLabel.backgroundColor = [UIColor clearColor];
navTitleLabel.textAlignment = NSTextAlignmentCenter;
navTitleLabel.textColor=[UIColor whiteColor];
navTitleLabel.text = #"IMG";
[navTitleLabel setFont: [UIFont fontWithName:#"BullettoKilla" size:16]];
self.navigationItem.titleView = navTitleLabel;
What am I doing wrong?
As pointed out by 0yeoj you have set the item width to 320. Try something smaller.
Try this
UILabel *navTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 40)];

UITextField "content size" property

Is there a way to make the right side of a UITextField's content "end sooner" like in this graphic:
I'm using the following to give the content text some left padding, but can't figure out an easy solution to reduce the available content size on the right size: self.textfield.layer.sublayerTransform = CATransform3DMakeTranslation(10, 0, 0);
I'd rather not subclass UITextField but I'm fine doing so if need be.
try these...
i hope it helps..
UITextField *txt=[[UITextField alloc]initWithFrame:CGRectMake(10, 100, 150, 30)];
[txt setBackgroundColor:[UIColor lightGrayColor]];
[txt setPlaceholder:#"Hello my friend"];
[self.view addSubview:txt];
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 50, 30)];
txt.rightView = paddingView;
txt.rightViewMode = UITextFieldViewModeAlways;

Ios 7 speed dial cell style

I want to create UItableview cells that have circle image and text in circle image. Should I draw every circle and text in it? Is there any cell style for this? I saw Apple did this in Phone->Speed Dial
You can use UIButton/UIImageView according to your requirement. To make that component as circle you should set corner radius.
object.layer.cornerRadius = 40;
object.clipsToBounds = YES;
I used circle image and added UILabel in the centre of image.
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 25, 14)];
myLabel.text = #"yourExtension"
myLabel.font=[UIFont fontWithName:#"Helvetica" size:10.0f];
myLabel.textAlignment=NSTextAlignmentCenter;
UIImage* im= [UIImage imageNamed:#"unknown.png"];
UIImageView* imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 35, 35)];
imageView.image=im;
[myLabel setCenter:imageView.center];
[imageView addSubview:myLabel];

iOS :viewForHeaderInSection can't get align with cell?

I have this code in my viewForHeaderInSection: of tableViewController
UILabel *l = [[[UILabel alloc] initWithFrame:CGRectMake(20, 0, 320, 40)] autorelease];
l.backgroundColor = [UIColor clearColor];
//l.textAlignment = UITextAlignmentLeft; //i tried it didn't help!
l.text= NSLocalizedString(#"My Label:", #"");
the label always appears around 35 point off the cell's left side. If i use the UITextAlignmentCenter it works and it goes in center but I want it align with left size of cell. I tried the CGRectZero instead of CGRectMake(20, 0, 320, 40), changed x but it didn't work!
Any help greatly appreciated.
At first make view with frame (0, 0, 320, 40). Then put label on it.

Resources