Beispiel #1
0
        public static ModifiedOpacity <T> Opacity <T> (this T view, double opacity) where T : View
        {
            var opaqueOpacityMetadata = SwiftType.Of(typeof(ModifiedOpacity <T>)) !;
            var result = TaggedPointer.AllocHGlobal(opaqueOpacityMetadata.NativeDataSize);

            try {
                using (var viewHandle = view.GetSwiftHandle()) {
                    var viewType = viewHandle.SwiftType;
                    ViewOpacity(result.Pointer, viewHandle.Pointer, opacity, viewType.Metadata, viewType.GetProtocolConformance(SwiftUILib.ViewProtocol));
                    return(new ModifiedOpacity <T> (result));
                }
            } catch {
                result.Dispose();
                throw;
            }
        }
Beispiel #2
0
        public static ModifiedBackground <TView, TBackground> Background <TView, TBackground> (this TView view, TBackground background)
            where TView : View
            where TBackground : View
        {
            var opaqueBackgroundMetadata = SwiftType.Of(typeof(ModifiedBackground <TView, TBackground>)) !;
            var result = TaggedPointer.AllocHGlobal(opaqueBackgroundMetadata.NativeDataSize);

            try {
                using (var viewHandle = view.GetSwiftHandle())
                    using (var backgroundHandle = background.GetSwiftHandle())
                    {
                        var viewType       = viewHandle.SwiftType;
                        var backgroundType = backgroundHandle.SwiftType;

                        // Note : When passing 2 generic parameters (in this case TView and TBackground) the order is IMPORTANT. The order is Generic1Pointer, Generic2Pointer, Generic1Metadata, Generic2Metadata, Generic1Prototcol, Generic2Prototcol
                        ViewBackground(result.Pointer, viewHandle.Pointer, backgroundHandle.Pointer, viewType.Metadata, backgroundType.Metadata, viewType.GetProtocolConformance(SwiftUILib.ViewProtocol), backgroundType.GetProtocolConformance(SwiftUILib.ViewProtocol));

                        return(new ModifiedBackground <TView, TBackground> (result));
                    }
            } catch {
                result.Dispose();
                throw;
            }
        }