I created a button on interface builder and set set its "image" to a png file and did not set any background image to it.
I want the button background to be transparent so I set its alpha to 0.6 in IB. The problem is I DO NOT WANT the image to be transparent too ( only the surrounding background ) but the image apparently inherits the button alpha and I can see throughout it.
Is there a way to completely avoid the button image to be transparent ?
Thanks
Update 1:
Using Xcode 5.02
I'm testing it on an iOS6 device, but can also test with iOS7 in the simulator.
Update 2:
Apparently the solution is to rescale the images to match the button rectangle.
The problem is that the button has a title that is positioned below the image to describe the functionality. In this case how could I put the text "floating" above the image ?
I'm assuming you're not programming in iOS 7?
Set the backgroundColor property of your UIButton to [UIColor clearColor]`;
If you've connected an IBOutlet to your UIButton then you can do something like this
[myButton setBackgroundColor:[UIColor clearColor]];
This will only work if you have a well defined transparent image. If you have some areas in your image that is not transparent then the above method will not work and you will simply need to edit your image again to make sure all the areas are actually transparent.
If you're in iOS 7, I believe the UIButton is already transparent and its up to your image to do the rest.
UPDATE 1
OP has requested for the title to remain above the image of the UIButton. Here is the solution for that,
What you need to do is set the backgroundImage property of the UIButton instead of simply setting the image of the button which will push the title down as you have found out.
Again I'm assuming you have an IBOutlet connected to your button; simply do the following:
Make sure you delete any image setting code in interface builder so that the properties are blank.
Then implement the code below
//This is the bit that does the magic - setting the background property
[myButton setBackgroundImage:[UIImage imageNamed:#"button.png"] forState:UIControlStateNormal];
//Then you can set the title as you require, the title will be centered floating above your background image.
[myButton setTitle:#"Localised String" forState:UIControlStateNormal];
[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
And you will get something like this:
If you are using a proper PNG file with transparency in the file, this works automatically without changing the alpha value. If the PNG does not have the transparent area defined properly you will not be able to achieve this by a property (only by complicated drawing methods, which is probably not want you want).
You have to use a PNG image with transparent background. To remove background colour of a image, Let me suggest you a free tool "GIMP" I've been using it for a while.
As already been said - you can use semi-transparent PNG for image.
As for putting up title over the image - you would need to write some code.
You won't be able to do this in Interface Builder.
So you can easy create button
#interface MyButton : UIButton
#end
#implementation MyButton
- (void)layoutSubviews {
[super layoutSubviews];
[self bringSubviewToFront:self.titleLabel];
}
#end
As for image, covering the whole area - it's better, when possible, to use background image rather image.
For partial background color transparency - you always can set semi-transparent background color for it in IB or in code:
[button setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.5]];
Related
To animate the image in a UIBarButton Item, I've created two regular UIButtons, button1 and button2 with different images, image1 and image2 and assign them to the UIBarButtonItem's customView property with:
self.myBarButton.customView = button1;
I am able to do the animation by assigning one or the other buttons to the UIBarButtonItem.
My problem is the first image is a line drawing that I want to tint. The second is a full color image that I don't want to tint. For some reason, if I set the rendering mode of the first image to UIImageRenderingModeTemplate which allows it to tint, then the second image does not display even if I set the rendering mode of the second to UIImageRenderingModeAlways.
Is there any way to tint the image that does not involve changing the rendering mode. I do have the line [button1 setTintColor:[UIColor blueColor]]; but it has no effect.
Also can anyone explain why setting the rendering mode would prevent the second image from appearing?
Thanks in advance for any suggestions.
I have a UILabel and a UIButton on the UIView (as ORIGIN in screenshot), and then are there any technology to make they gray temporarily? (as EXPECTED in screenshot)
I've try to create a UIVIew (Background color #6666 and alpha 0.75) front of them and get ACTUAL.
https://i.stack.imgur.com/y5xhH.jpg "screenshot"
By the way, the ACTUAL screen shot is captured when presenting a UIAlertController.
Don't set alpha 0.75 instead set 1.0 and you can set title colour for button either in storyboard or xib if you are using storyboard or nib file. You can also set title colour programatically.
[button setTitleColor:[UIColor lightTextColor] forState:UIControlStateNormal];
here button is your button reference and you can set any colour you want.
Edited:
If you have clicked actual image with alert view then you can also set with 0.75 alpha what is best suited you. What only diff i can see is the colour of button text. Which you can set from above mentions methods.
I have an ImageView with a picture and a button centered within it. On the button I have a different UIImage and the background on the button is white. In Attributes Inspector I have selected the UIImage for the button and made the button custom but still I have white background on the button.
I want the background on the button to be the same as the picture on the ImageView. I thought it was enough to change the button to custom. I am using Xcode 5.0.2, is there anyone that could help me with this. This is what my ImageView + button looks like now:
And these are the settings for the button:
If you're asking how to make background for the button clear, from within the Attributes Inspector scroll down to the View section and change the background to Clear Color from the dropdown menu.
Also make sure your .png has a transparent background. If you've already set the background to Clear Color the issue could simply be that your .png has a white background rather than a clear one.
try
[button setBackgroundImage:[UIImage imageNamed:#"name" forState:UIControlStateNormal]
Add image that you use for ImageView to Background properties of your button.
The following should do:
yourButton.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:#"yourImage"]]
My UIView and UIImageView colors look perfect in interface builder, but are perverted upon building - see the pic below with IB on the left, and the simulator on the right:
There is a UIView with it's background color manually set to 65, 126, 218 - and on top of that a UIImageView for the "checkout" text, and a UIButton with it's Image set for the settings gear. Assets are PNG.
The asset colors read correctly, and everything appears to line up just right in interface builder as I can't see any seams. However, when I build the background color on the view changes slightly, and the asset colors change as well. Using the color-picker shows that both colors have been perverted somewhere in the process.
How do I get my colors to remain true between IB and building?
Make the images of the title and settings button background clear/transparent so there is no blue square making the effect darker
Write in your code:
[yourButton setBackgroundColor:[UIColor clearColor]];
Edited:
do the same for the checkout image setting background as clear color
How can I get the UIColor for no color? Y'know, the color represented as a white square with a red diagonal line through it.
TLDR
I'm trying to set the tint color of a UIButton in interface builder, but it's not playing nice, so I'm trying to do it programatically. If I set the button's tint color to [UIColor clearColor], the button disappears. The button only has an image, no text.
This property not available for all types of UIButton
You need to Use another buttonType.you can find this link useful.
the documentation also does not provide information that which specific button types support this property.
so..in general use custom button type
Create your button as custom...
[UIButton buttonWithType:UIButtonTypeCustom]
This will remove your red corner problem since i think your button is created as default (rounded rect) type.
You can set this in interface builder too (not necessarily create it programmatically).