I would like to know the difference between:
On the screenshot I have made two UIViews with two black (alpha = 1.0) UILabels on top of each:
Assume a macro _RGB is defined before:
#define _RGB(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]
and then here is the code::
[_view1 setBackgroundColor:_RGB(255, 0, 0, 1)];
[_view1 setAlpha:0.5];
[_view2 setBackgroundColor:_RGB(255, 0, 0, 0.5)];
[_view2 setAlpha:1];
[_view3 setBackgroundColor:_RGB(255, 0, 0, 1)];
[_view3 setAlpha:1];
I can see only one difference visually: Changing view's own alpha instead of bg color's, affects the subviews as well. But other than that is there any difference in functionality that I should consider? (eg. On animations, layers, etc.)
alpha. The opacity value of the new color object, specified as a value from 0.0 to 1.0.
Basic Swift Code for iOS Apps View's Alpha value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents totally transparent and 1.0 represents totally opaque.
An opaque view is expected to fill its bounds with entirely opaque content—that is, the content should have an alpha value of 1. 0 . If the view is opaque and either does not fill its bounds or contains wholly or partially transparent content, the results are unpredictable.
Any SwiftUI view can be partially or wholly transparent using the opacity() modifier. This accepts a value between 0 (completely invisible) and 1 (fully opaque), just like the alpha property of UIView in UIKit.
The difference is:
So in your examples:
_view1
(alpha <1 on view): alpha is also applied to the subview UILabel_view2
(alpha <1 on background color): subview UILabel is nicely opaque_view3
(defualt alpha 1 on both): well, we all see :-) background color and label are both opaqueExample usage of both:
Left image: You have a semi-transparent black overlay which has a subview UIImageView
containing a white checkmark icon and you usually want the icon to be fully opaque (non-transparent). So you set just the background color black with alpha <1 (0.75f in the example).
In opposing to:
Right image: You have have a semi-transparent black overlay which has a subview UIImageView
containing a white pattern image (the pattern is opaque white, no alpha). And you want the pattern in overlay to be also semi-transparent. You then would set background color to black with alpha 1 (opaque) and alpha <1 to the whole view.
As you can see, icon on left image is fully opaque, but on a right, you can see also through a stars pattern.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With