Skip to content

Commit c37fc93

Browse files
Add project and static library (#1)
* Add project and static library * remove property from build file * workflow now target main branch * add api definition and enums * fix project name * update namespaces * update namespace * move SWRevealViewControllerSegueSetController in main class * typo in build file * add readme content * Update namespace to SWRevealViewControllerMaui * building Library and not framework * Library = Static * update version * Give usage example in the readme.
1 parent 7c34c90 commit c37fc93

File tree

6 files changed

+350
-2
lines changed

6 files changed

+350
-2
lines changed

.github/workflows/create-nuget.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Build nuget package
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
9+
jobs:
10+
build:
11+
runs-on: macos-latest
12+
env:
13+
SDK: 17.5
14+
SRC_FOLDER: .
15+
# PROJ_NAME: SWRevealViewController.xcodeproj
16+
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
21+
- name: Install .NET 9
22+
uses: actions/setup-dotnet@v4
23+
with:
24+
dotnet-version: '9.x'
25+
#
26+
#
27+
# - name: Build MBProgressHUD iphonesimulator Framework
28+
# run: |
29+
# xcodebuild -project ${{ env.SRC_FOLDER }}/${{ env.PROJ_NAME }} \
30+
# -target "MBProgressHUD Framework" \
31+
# -sdk iphonesimulator${{ env.SDK }} \
32+
#
33+
# - name: Build MBProgressHUD iphonesimulator Framework
34+
# run: |
35+
# xcodebuild -project ${{ env.SRC_FOLDER }}/${{ env.PROJ_NAME }} \
36+
# -target "MBProgressHUD Framework" \
37+
# -sdk iphoneos${{ env.SDK }} \
38+
#
39+
# - name: Build xcframework
40+
# run: |
41+
# xcodebuild -create-xcframework \
42+
# -framework "${{ env.SRC_FOLDER }}/build/Release-iphonesimulator/MBProgressHUD.framework" \
43+
# -framework "${{ env.SRC_FOLDER }}/build/Release-iphoneos/MBProgressHUD.framework" \
44+
# -output ./dotnet-binding/MBProgressHUD.xcframework
45+
#
46+
# - name: Upload .xcframework as artifact
47+
# uses: actions/upload-artifact@v4.6.2
48+
# with:
49+
# name: xcframework
50+
# compression-level: '1'
51+
# path: ./dotnet-binding/SWRevealViewController.xcframework
52+
#
53+
- name: Restore workload
54+
working-directory: ./SWRevealViewController
55+
run: dotnet workload restore
56+
57+
- name: Build .NET binding project
58+
working-directory: ./SWRevealViewController
59+
run: dotnet build -c Release SWRevealViewController.csproj
60+
61+
- name: Pack NuGet
62+
working-directory: ./SWRevealViewController
63+
run: dotnet pack -c Release SWRevealViewController.csproj
64+
65+
- name: Upload .nupkg as artifact
66+
uses: actions/upload-artifact@v4.6.2
67+
with:
68+
name: SWRevealViewController-nuget-package
69+
compression-level: '0'
70+
path: SWRevealViewController/bin/Release/*.nupkg

README.md

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,41 @@
1-
# SWRevealViewController-dotnet
2-
.net bindings for the SWRevealViewController ios library
1+
# Maui iOS binding for SWRevealViewController
2+
3+
[![NuGet version](https://badge.fury.io/nu/com.jonathanantoine.SWRevealViewController.svg)](https://badge.fury.io/nu/com.jonathanantoine.SWRevealViewController)
4+
5+
- Native library repository: [SWRevealViewController](https://github.com/John-Lluch/SWRevealViewController)
6+
7+
**Support Net 9.0 for iOS (works with Xcode 15 and iOS 17)**
8+
9+
## Nuget
10+
11+
* `Install-Package com.jonathanantoine.SWRevealViewController`
12+
* <https://www.nuget.org/packages/com.jonathanantoine.SWRevealViewController>
13+
14+
## Compatibility
15+
* Run on ios and ios simulator (arm64 + x86_64).
16+
17+
## Build
18+
* Run the GitHub action to build the project
19+
20+
21+
## Usage
22+
Follow [this blog post to reference](https://medium.com/@jonathanantoine/how-to-add-a-local-nuget-nupkg-to-your-net-project-0254d222e2a6) it in your project if not yet published on Nuget.
23+
24+
25+
```csharp
26+
using SWRevealViewControllerMaui;
27+
28+
var pageController = new MyPageController();
29+
pageController.ViewControllerSelected += pageControllerController_ViewControllerSelected;
30+
31+
var menuController = new MenuViewController();
32+
33+
var swRevealViewController = new SWRevealViewController(menuController, pageController);
34+
```
35+
36+
## Contribution
37+
Contribution to [ApiDefinition.cs](SWRevealViewController/ApiDefinition.cs) are welcome, just send PRs.
38+
39+
40+
41+
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
using System;
2+
using CoreGraphics;
3+
using Foundation;
4+
using ObjCRuntime;
5+
using System.Drawing;
6+
using UIKit;
7+
8+
namespace SWRevealViewControllerMaui {
9+
10+
[BaseType (typeof (UIViewController))]
11+
public partial interface SWRevealViewController
12+
{
13+
[Export ("initWithRearViewController:frontViewController:")]
14+
IntPtr Constructor (UIViewController rearViewController, UIViewController frontViewController);
15+
16+
[Export ("rearViewController", ArgumentSemantic.Retain)]
17+
UIViewController RearViewController { get; set; }
18+
19+
[Export ("setRearViewController:animated:")]
20+
void SetRearViewController (UIViewController rearViewController, bool animated);
21+
22+
[Export ("rightViewController", ArgumentSemantic.Retain)]
23+
UIViewController RightViewController { get; set; }
24+
25+
[Export ("setRightViewController:animated:")]
26+
void SetRightViewController (UIViewController rightViewController, bool animated);
27+
28+
[Export ("frontViewController", ArgumentSemantic.Retain)]
29+
UIViewController FrontViewController { get; set; }
30+
31+
[Export ("setFrontViewController:animated:")]
32+
void SetFrontViewController (UIViewController frontViewController, bool animated);
33+
34+
[Export ("pushFrontViewController:animated:")]
35+
void PushFrontViewController (UIViewController frontViewController, bool animated);
36+
37+
[Export ("frontViewPosition")]
38+
FrontViewPosition FrontViewPosition { get; set; }
39+
40+
[Export ("setFrontViewPosition:animated:")]
41+
void SetFrontViewPosition (FrontViewPosition frontViewPosition, bool animated);
42+
43+
[Export ("revealToggleAnimated:")]
44+
void RevealToggleAnimated (bool animated);
45+
46+
[Export ("rightRevealToggleAnimated:")]
47+
void RightRevealToggleAnimated (bool animated);
48+
49+
[Export ("revealToggle:")]
50+
void RevealToggle (NSObject sender);
51+
52+
[Export ("rightRevealToggle:")]
53+
void RightRevealToggle (NSObject sender);
54+
55+
[Export ("panGestureRecognizer")]
56+
UIPanGestureRecognizer PanGestureRecognizer { get; }
57+
58+
[Export ("tapGestureRecognizer")]
59+
UITapGestureRecognizer TapGestureRecognizer { get; }
60+
61+
[Export ("rearViewRevealWidth")]
62+
float RearViewRevealWidth { get; set; }
63+
64+
[Export ("rightViewRevealWidth")]
65+
float RightViewRevealWidth { get; set; }
66+
67+
[Export ("rearViewRevealOverdraw")]
68+
float RearViewRevealOverdraw { get; set; }
69+
70+
[Export ("rightViewRevealOverdraw")]
71+
float RightViewRevealOverdraw { get; set; }
72+
73+
[Export ("rearViewRevealDisplacement")]
74+
float RearViewRevealDisplacement { get; set; }
75+
76+
[Export ("rightViewRevealDisplacement")]
77+
float RightViewRevealDisplacement { get; set; }
78+
79+
[Export ("draggableBorderWidth")]
80+
float DraggableBorderWidth { get; set; }
81+
82+
[Export ("bounceBackOnOverdraw")]
83+
bool BounceBackOnOverdraw { get; set; }
84+
85+
[Export ("bounceBackOnLeftOverdraw")]
86+
bool BounceBackOnLeftOverdraw { get; set; }
87+
88+
[Export ("stableDragOnOverdraw")]
89+
bool StableDragOnOverdraw { get; set; }
90+
91+
[Export ("stableDragOnLeftOverdraw")]
92+
bool StableDragOnLeftOverdraw { get; set; }
93+
94+
[Export ("presentFrontViewHierarchically")]
95+
bool PresentFrontViewHierarchically { get; set; }
96+
97+
[Export ("quickFlickVelocity")]
98+
float QuickFlickVelocity { get; set; }
99+
100+
[Export ("toggleAnimationDuration")]
101+
double ToggleAnimationDuration { get; set; }
102+
103+
[Export ("replaceViewAnimationDuration")]
104+
double ReplaceViewAnimationDuration { get; set; }
105+
106+
[Export ("frontViewShadowRadius")]
107+
float FrontViewShadowRadius { get; set; }
108+
109+
[Export ("frontViewShadowOffset", ArgumentSemantic.Assign)]
110+
SizeF FrontViewShadowOffset { get; set; }
111+
112+
[Export ("frontViewShadowOpacity")]
113+
float FrontViewShadowOpacity { get; set; }
114+
115+
[Export ("delegate", ArgumentSemantic.Assign)]
116+
SWRevealViewControllerDelegate Delegate { get; set; }
117+
}
118+
119+
[Model, BaseType (typeof (NSObject))]
120+
public partial interface SWRevealViewControllerDelegate
121+
{
122+
[Export ("revealController:willMoveToPosition:")]
123+
void WillMoveToPosition (SWRevealViewController revealController, FrontViewPosition position);
124+
125+
[Export ("revealController:didMoveToPosition:")]
126+
void DidMoveToPosition (SWRevealViewController revealController, FrontViewPosition position);
127+
128+
[Export ("revealController:animateToPosition:")]
129+
void AnimateToPosition (SWRevealViewController revealController, FrontViewPosition position);
130+
131+
[Export ("revealControllerPanGestureShouldBegin:")]
132+
bool PanGestureShouldBegin (SWRevealViewController revealController);
133+
134+
[Export ("revealControllerTapGestureShouldBegin:")]
135+
bool TapGestureShouldBegin (SWRevealViewController revealController);
136+
137+
[Export ("revealControllerPanGestureBegan:")]
138+
void PanGestureBegan (SWRevealViewController revealController);
139+
140+
[Export ("revealControllerPanGestureEnded:")]
141+
void PanGestureEnded (SWRevealViewController revealController);
142+
143+
[Export ("revealController:panGestureBeganFromLocation:progress:")]
144+
void PanGestureBeganFromLocation (SWRevealViewController revealController, float location, float progress);
145+
146+
[Export ("revealController:panGestureMovedToLocation:progress:")]
147+
void PanGestureMovedToLocation (SWRevealViewController revealController, float location, float progress);
148+
149+
[Export ("revealController:panGestureEndedToLocation:progress:")]
150+
void PanGestureEndedToLocation (SWRevealViewController revealController, float location, float progress);
151+
152+
[Export ("revealController:willAddViewController:forOperation:animated:")]
153+
void WillAddViewController (SWRevealViewController revealController, UIViewController viewController, SWRevealControllerOperation operation, bool animated);
154+
155+
[Export ("revealController:didAddViewController:forOperation:animated:")]
156+
void DidAddViewController (SWRevealViewController revealController, UIViewController viewController, SWRevealControllerOperation operation, bool animated);
157+
158+
[Export ("revealController:animationControllerForOperation:fromViewController:toViewController:")]
159+
UIViewControllerAnimatedTransitioning AnimationControllerForOperation (SWRevealViewController revealController, SWRevealControllerOperation operation, UIViewController fromVC, UIViewController toVC);
160+
}
161+
162+
[Category, BaseType (typeof (UIViewController))]
163+
public partial interface SWRevealViewController_UIViewController
164+
{
165+
[Export ("revealViewController")]
166+
SWRevealViewController RevealViewController ();
167+
}
168+
169+
public delegate void SegueCallback(SWRevealViewControllerSegueSetController segue, UIViewController svc, UIViewController dvc);
170+
171+
[BaseType (typeof (UIStoryboardSegue))]
172+
public partial interface SWRevealViewControllerSegueSetController
173+
{
174+
[Export ("performBlock", ArgumentSemantic.Retain)]
175+
SegueCallback PerformDelegate { get; set; }
176+
}
177+
178+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>net9.0-ios</TargetFramework>
4+
<RootNamespace>SWRevealViewController</RootNamespace>
5+
<Nullable>enable</Nullable>
6+
<ImplicitUsings>true</ImplicitUsings>
7+
<IsBindingProject>true</IsBindingProject>
8+
9+
<!-- Nuget package -->
10+
<PackageId>com.jonathanantoine.SWRevealViewController</PackageId>
11+
<Version>1.0.0.1</Version>
12+
<Authors>Jonathan Antoine</Authors>
13+
<Title>SWRevealViewController for dotnet</Title>
14+
<PackageProjectUrl>https://github.com/jonathanantoine/SWRevealViewController-dotnet</PackageProjectUrl>
15+
<Description>SWRevealViewController binding for Net 9.0 iOS</Description>
16+
<PackageReleaseNotes>SWRevealViewController binding for Net 9.0 iOS</PackageReleaseNotes>
17+
<PackageTags>maui ios SWRevealViewController dotnet</PackageTags>
18+
<PackageReadmeFile>README.md</PackageReadmeFile>
19+
</PropertyGroup>
20+
21+
<ItemGroup>
22+
<ObjcBindingApiDefinition Include="ApiDefinition.cs"/>
23+
<ObjcBindingCoreSource Include="StructsAndEnums.cs"/>
24+
<None Include="..\.github\workflows\create-nuget.yml"/>
25+
<None Include="..\README.md" Pack="true" PackagePath="\"/>
26+
</ItemGroup>
27+
<ItemGroup>
28+
<NativeReference Include="SWRevealViewControllerSDK.a">
29+
<Kind>Static</Kind>
30+
<Frameworks>Foundation</Frameworks>
31+
<SmartLink>True</SmartLink>
32+
<ForceLoad>True</ForceLoad>
33+
<LinkerFlags>-ObjC -fobjc-arc</LinkerFlags>
34+
</NativeReference>
35+
</ItemGroup>
36+
37+
</Project>
Binary file not shown.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
using CoreGraphics;
3+
using Foundation;
4+
using ObjCRuntime;
5+
using UIKit;
6+
7+
namespace SWRevealViewControllerMaui {
8+
9+
public enum FrontViewPosition {
10+
LeftSideMostRemoved,
11+
LeftSideMost,
12+
LeftSide,
13+
Left,
14+
Right,
15+
RightMost,
16+
RightMostRemoved
17+
}
18+
19+
public enum SWRevealControllerOperation {
20+
ReplaceRearController,
21+
ReplaceFrontController,
22+
ReplaceRightController
23+
}
24+
}

0 commit comments

Comments
 (0)