UIButton Highlighting Overcome default behaviour - ios

In a program much like the who want to be a millionaire... I have 4 option buttons. It should flash red or green on press. The four buttons have either red or green images as background images. In the code setup I have such a method ready to setup the first question and when the second question gets set, the background images change accordingly.
Currently the default blue highlight is always appearing on the first pressing of any one the buttons and after that there are other issues.
I could paste some different approaches here, (but they dont work). So any suggestions would be good.
Also in the IB, when you set the highlight with background image, that works. I would use use, but for the same button, the back ground image must be changed programmatically.
Thanks in advance for the help/suggestions!

Use two State UIControlStateNormal and UIControlStateHighlighted
[btnMenu setBackgroundImage:[UIImage imageNamed:#"img1.png"] forState:UIControlStateNormal];
[btnMenu setBackgroundImage:[UIImage imageNamed:#"img1-Highlighted.png"] forState:UIControlStateHighlighted];

Related

UITableView button image disappears while scrolling

I have a UITableView (like FaceBook post where I want to like, share, comment). When I click one like button it should turn to some other image and also it should call a method for further process.
I am using Objective-C
In the Storyboard, just change the Button properties for different State Configurations according to your requirement.
According to your requirement, you need to set the different Image property for both Default and Selected states.
No need to write any extra lines of code for that.
You can do with set image for State Config of button [Normal, Highlighted, Selected, Disable] at design.
When you click on the button, you call a method and change state of button Selected or None.
Seem like it's because of dequeueReusableCellWithIdentifier method. In cellForRowAtIndexpath, you need to check button is clicked in this cell or not.
If button in this cell is clicked, set image of button with clicked image. If not, set image of button with normal image.
You can set images for different states like below
[btn setBackgroundImage:[UIImage imageNamed:#"image1"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:#"image2"] forState:UIControlStateSelected];
[btn setBackgroundImage:[UIImage imageNamed:#"image3"] forState:UIControlStateHighlightedSelected];

Button with first half transparent and other half title

I have some requirement to prepare a UI like Image 1:
But sometime i get it like(title disappeared)
I am not sure why this is happening.
The background image second has half transparent and half image(refresh image),there i need to show text.
EDIT
XIB settings:
Any idea or solution for this ?
OR
Please suggest some other way to achieve this.
I just found in the UIstoryboard, why don't you try in this way
You can configure this UIButton as your need with the title attributes, right ?
As per your comment => colour of the title will be configured from server.
Then may be it is also possible that sometimes you will get clearColor of your button's title from server so you not able to display title of button. For solve this issue you need to put condition such like,
if(ButtonTitleColor is "clearColor")
[myButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; // here set color whatever you want.

How do I change an Image when a button is pressed?

Now I know this question may sound like a duplicate, but I doubt it seeing as I've researched and none of the possible duplicates answer my question. If it is a duplicate and it's been answered by all means show me the way!
But my question doesn't deal so much with a button changing an image, more so the button is the image.
So my button is an image and when pressed a sound plays and then the image changes until the sound is done. My problem is I can't get the image to change.
Now I have tried this method thinking that I could press my button and my new image would cover up my button until the sound was done:
UIImage *dolDerp = [UIImage imageNamed:#"dolphin2.png"];
[imageview setImage:dolDerp];
I have an outlet set up and it's connected to an image view object and then the action is connected to the button, so in theory when the button is pressed the new image should take over the screen. Now obviously the code needs to be tweaked so the button would go away after a few seconds when the sound is played, but my problem is I can't even get the button to display. I also would prefer to just have the button objects image change if possible?
If anyone could offer some help it's much appreciated!
the best thing is in Interface Builder assign the two images to the button Normal/Selected states.
in code just use this line:
myButton.selected = YES;
//or
myButton.selected = NO;
What #Mahmoud Fayez suggested is good. In code, the proper way to set a buttons image/background image is [button setImage:image forState:UIControlStateNormal] or the similar method for setBackgroundImage
If you are using IB though, it is indeed best to set the different images for different states in IB, then change the buttons state (which will then change the buttons image) in code.

UIButton with cust. background looks bad when pressed

I have a UIButton with a custom background that I set in the Interface Builder (see picture). It looks nice, but in the pressed state it gets really ugly (see the 2nd picture). What's going on here?
Normal:
Pressed:
[btn setBackgroundImage:[[UIImage imageNamed:#"button_red.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 12, 20, 12)] forState:UIControlStateNormal];
[btn setBackgroundImage:[[UIImage imageNamed:#"button_red_pressed.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 12, 20, 12)] forState:UIControlStateHighlighted];
This should solve the problem.
Also, change your button style to Custom, this will remove that blue button background.
Post some code or maybe the image itself. It looks as if you might need to declare your 'pressed' image with one of UIImage's resizableImage* methods. It's stretching to fill the button rect.
Also, I'm fond of the MOButton and MOGlassButton classes used in the iPhone SOCKS project (handy in itself).
Update
The following worked for me, it even animated it dark when pressed:

Round UIButton

I want to know whether drawing a round UIButton(not rounded rect) is possible.
When I add a round image in a UIButton of type custom, then it looks like a round button. But at the moment the button is clicked the boundary of the button becomes visible, so that it looks like a square button, then again when the click ends it looks like a round button.
I want the button to look like a round button even at the moment the click happens. is this possible?
Tested Code:
.h
-(void)vijayWithApple;
.m
-(void)vijayWithApple{
NSLog(#"vijayWithApple Called");
}
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:#"Micky.png"] forState:UIControlStateNormal];
[button addTarget:self action:#selector(vijayWithApple) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:#"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(135.0, 180.0, 40.0, 40.0);//width and height should be same value
button.clipsToBounds = YES;
button.layer.cornerRadius = 20;//half of the width
button.layer.borderColor=[UIColor redColor].CGColor;
button.layer.borderWidth=2.0f;
[self.view addSubview:button];
Result
Just create two rounded button images, one for the pressed state and one for unpressed.
In IB, create a UIButton of type Custom. Go to the section where you set a background image, and set the dropdown with "All" to normal - now set the image to your unpressed image.
Then change the dropdown to "Selected", and put in your pressed image.
Now change the fill type to be aspect fit, and make the button sqare. Use as a normal UIButton anywhere. You can of course also easily do this all programaitcally with similar steps (setting images for UIControlStateNormal and UIControlStateSelected).
You'd probably have to create a custom control for that, but do you really need a round button?
Every platform has its UI conventions, and the iPhone is no exception. Users expect the buttons to be rounded rectangles.
UPDATE in response to comment:
If I'm getting this right, you're not looking for a round button, but rather a clickable (touchable) image.
You can use an UIImageView and its touchesBegan method.
UPDATE 2:
Wait a second. What kind of radio button are we talking about? For some reason I thought you were trying to imitate a real radio. If you're talking about a radio button group, please use a UISegmentedControl or a UIPicker.
UIButton *but=[UIButton buttonWithType:UIButtonTypeCustom];
but.layer.cornerRadius=50;
From what I know of the SDK (admittedly I have very little experience beyond tutorials in books/screencasts), you'd have to create your own control to have a radio button. There are a couple of suggestions on how to implement that in this question.
That said, from a user's perspective I feel like it would be better to stick to the native controls. iPhone users are used to specific controls (i.e. UITableViews or UIPickerViews) for this type of interaction. Straying from practically universal UI conventions tends to make the user experience more jarring.
take the help of this site for creating Round Button on iPhone.
You can get many custom controls :)
http://www.cocoacontrols.com/controls
http://www.cocoacontrols.com/platforms/ios/controls/uiglossybutton
H#PPY CODING !
Thanks & regards,
Gautam Tiwari

Resources