# 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; ``` ![](/img/1543965643844.png) Once the custom meeting UI feature is enabled, then starting or joining a meeting is the same. ## Create a custom meeting UI ![](/img/1550619402240.png) ## 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. } ``` ![](/img/1550619412576.png) 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; ... } ```