# Overview
> Important
>
> See [UI legal notices](/docs/meeting-sdk/ui-notices/) for Zoom legal notices and how to display them in your app.
## Enable the custom meeting UI
To use your custom meeting UI, enable it before you start or join a meeting.
```swift
let context = MobileRTCSDKInitContext()
context.enableCustomizeMeetingUI = true
```
```objectivec
MobileRTCSDKInitContext *context = [[MobileRTCSDKInitContext alloc] init];
context.enableCustomizeMeetingUI = YES;
```

Once the custom meeting UI feature is enabled, then starting or joining
a meeting is the same.
## Create a custom meeting UI

## Assign customized UI meeting delegate
To implement a custom meeting UI, first assign `MobileRTCCustomizedUIMeetingDelegate` to your
View Controller.
```swift
extension ViewController: MobileRTCCustomizedUIMeetingDelegate {
func onInitMeetingView() {
// onInitMeetingView, push to your customize view.
}
func onDestroyMeetingView() {
// onDestroyMeetingView, navigate to your previous view or push to another view.
}
}
guard
let service = MobileRTC.shared().getMeetingService(),
else {}
service.customizedUImeetingDelegate = self
```
**In your `.h` file**
```objectivec
@interface ViewController : UIViewController {
}
```
**In your `.m` file**
```objectivec
MobileRTCMeetingService *meetingService = [[MobileRTC sharedRTC] getMeetingService];
if (!meetingService) {
return;
}
meetingService.customizedUImeetingDelegate = self;
- (void)onInitMeetingView
{
// onInitMeetingView, push to your customize view.
}
- (void)onDestroyMeetingView
{
// onDestroyMeetingView, navigate to your previous view or push to another view.
}
```

Then, in your `StartJoinMeetingPresenter.m` file, implement these two functions.
```objectivec
@implementation SDKStartJoinMeetingPresenter (CustomizedUIMeetingDelegate)
- (void)onInitMeetingView
{
// Create & Present View Controller
NSLog(@"onInitMeetingView....");
CustomMeetingViewController *vc = [[CustomMeetingViewController alloc] init];
self.customMeetingVC = vc;
[vc release];
[self.rootVC addChildViewController:self.customMeetingVC];
[self.rootVC.view addSubview:self.customMeetingVC.view];
[self.customMeetingVC didMoveToParentViewController:self.rootVC];
self.customMeetingVC.view.frame = self.rootVC.view.bounds;
...
}
- (void)onDestroyMeetingView
{
// Remove & Dismiss View Controller
NSLog(@"onDestroyMeetingView....");
NSLog(@"onDestroyMeetingView....");
[self.customMeetingVC willMoveToParentViewController:nil];
[self.customMeetingVC.view removeFromSuperview];
[self.customMeetingVC removeFromParentViewController];
self.customMeetingVC = nil;
...
}
```