Roblox makes available, the object called ‘UIStroke’ which allows developers to create outlines around UI such as ‘Frame’ and “TextLabel”.
The issue currently is that we can only define the thickness of the stroke in terms of pixels, however it would be incredibly useful to include SCALE so that our GUI outlines look the same accross multiple devices.
Also, if this is too hard to implement because it may break the vale type, consider adding an enum type for UIStrokeSizeMode with options Scale/Offset
I wish they thought this through a bit more before the API was released - the Thickness property could have been a UDim, just like UICorner’s CornerRadius.
It may also be useful for another property to be added that lets us control which axis scaling occurs on (or perhaps this could be built in to the enum e.g. Pixel, ScaleX, ScaleY, ScaleAuto with the latter representing the method UICorner uses to determine CornerRadius).
Another horrible thing about UIStrokes is that the device emulators don’t even show the issue with them. My game looks significantly worse on an actual device. Might be something to look in to.
It has been almost over 2 years since this post was made and this feature is still no where to be found. I think UIStrokes are incredibly useful and used by many big games, with their biggest downside being that there is no simple way to scale them. Roblox, please make a scale property!
All it takes is converting the Scale property to current -> UDim.new(0, current) in all games. This will keep the exact same functionality, but lets you also set scale. Might be hard to do, but possible.
this is doable at the moment, using CollectionService to add tags to UIStroke instances, though it would be nice if it was integrated because the only way to keep it scaled is to design the ui from a resolution then use that resolution as a fixed point.