내비게이션 컨트롤러가 내장 된 팝 오버는 백 내비게이션의 크기를 고려하지 않습니다.


89

뷰 컨트롤러의 작은 계층 구조를 포함하는 UINavigationController를 호스팅하는 UIPopoverController가 있습니다.

문서를 따랐고 각 뷰 컨트롤러에 대해 뷰의 팝 오버 컨텍스트 크기를 다음과 같이 설정했습니다.

[self setContentSizeForViewInPopover:CGSizeMake(320, 500)];

(컨트롤러마다 크기가 다름)

이것은 계층에서 앞으로 이동할 때 예상대로 작동합니다. 팝 오버는 푸시 된 컨트롤러에 따라 크기 변경을 자동으로 애니메이션합니다.

그러나 내비게이션 바의 뒤로 버튼을 통해 뷰 스택을 통해 "뒤로"를 탐색 할 때 팝 오버는 크기가 변경되지 않고 가장 깊은 뷰에 도달 한만큼 커집니다. 이것은 나에게 깨진 것 같습니다. 팝업이 뷰 스택을 통해 팝업 될 때 설정된 크기를 존중할 것으로 기대합니다.

내가 뭔가를 놓치고 있습니까?

감사.


팝 오버 크기를 어디에서 설정하고 있습니까? 뷰 컨트롤러가 표시 될 때마다 (예 :) 재설정하고 viewWillAppear:있습니까?
Ole Begemann

어떤 문서를 따랐다는 의미입니까?
Tom Hamming 2011

답변:


94

좋아, 나는 같은 문제로 어려움을 겪고 있었다. 위의 솔루션 중 어느 것도 나를 위해 잘 작동하지 않았기 때문에 약간의 조사를 수행하고 이것이 어떻게 작동하는지 알아보기로 결정했습니다. 이것이 내가 발견 한 것입니다.-당신이contentSizeForViewInPopover뷰 컨트롤러에서는 다른 컨트롤러로 이동하는 동안 팝 오버 크기가 변경 될 수 있지만 팝 오버 자체에 의해 변경되지 않습니다. -다른 컨트롤러로 이동하는 동안 팝 오버의 크기가 변경 될 때, 되돌아가는 동안 팝 오버의 크기는 복원되지 않습니다.-viewWillAppear에서 팝 오버의 크기를 변경하면 매우 이상한 애니메이션이 나타납니다. 나는 그것을 권장하지 않습니다-컨트롤러 내부에 하드 코딩 된 크기를 설정하는 것은 전혀 작동하지 않을 것입니다. 내 컨트롤러는 때때로 크고 때로는 작을 것입니다.

이 모든 고통에 대한 해결책은 다음과 같습니다. currentSetSizeForPopoverviewDidAppear에서 의 크기를 재설정해야합니다 . 하지만주의해야합니다. 필드에 이미 설정된 것과 같은 크기를 설정 currentSetSizeForPopover하면 팝 오버가 크기를 변경하지 않습니다. 이를 위해 먼저 가짜 크기 (이전에 설정된 것과 다를 것임)를 설정 한 다음 적절한 크기를 설정할 수 있습니다. 이 솔루션은 컨트롤러가 내비게이션 컨트롤러 내부에 중첩되어 있어도 작동하며 컨트롤러 사이를 다시 탐색 할 때 그에 따라 팝 오버의 크기가 변경됩니다.

크기를 설정하는 트릭을 수행하는 다음 도우미 메서드를 사용하여 UIViewController에 범주를 쉽게 만들 수 있습니다.


- (void) forcePopoverSize {
    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
    self.contentSizeForViewInPopover = fakeMomentarySize;
    self.contentSizeForViewInPopover = currentSetSizeForPopover;
}

그런 다음 -viewDidAppear원하는 컨트롤러 에서 호출하십시오 .


1
위의 카테고리는 내가 작동하도록 할 수있는 유일한 (정상적인) 방법입니다. 감사.
RickiG

작동합니다. 팝 오버가 축소 될 때 테이블 뷰가 축소 영역에서 "검은 색"이되는 것을 방지하는 방법을 알아 내야합니다.하지만이 솔루션은 실제로 팝 오버가 각 스택 수준에 대해 올바른 크기로 이동할 수 있도록합니다. 감사!
Ben Zotto 2011 년

2
나는 그것을 [UIView beginAnimations : nil context : nil]에 감쌌다; 및 [UIView commitAnimations]; -덜 거슬리게 만듭니다.
Dustin

2
나를 위해 self.contentSizeForViewInPopover = CGSizeZero; 라인을 저장하고 동일한 효과를 가졌습니다. 감사합니다!
rob5408 2013 년

self.contentSizeForPopover = CGSizeZero를 추가 한 경우에만이 솔루션을 사용할 수 있습니다. 내 viewWillDisappear 메소드에서 내가 튀어 나온 VC의.
LightningStryk

18

iOS 7 및 8에서 해결 한 방법은 다음과 같습니다.

iOS 8에서 iOS는 popover에서 원하는 뷰를 presentingViewController 뷰 컨트롤러의 presentViewController로 자동 래핑합니다. popovercontroller의 새로운 기능을 설명하는 2014 년 WWDC 비디오가 있습니다.

어쨌든, 모두 자체 크기 조정을 원하는 탐색 컨트롤러 스택에 표시되는 뷰 컨트롤러의 경우 이러한 뷰 컨트롤러는이 코드를 호출하여 (iOS 8에서) preferredContentSize를 동적으로 설정해야합니다.

self.presentingViewController.presentedViewController.preferredContentSize = CGSizeMake(320, heightOfTable);

heightOfTable을 계산 된 테이블 또는 뷰 높이로 바꿉니다.

많은 중복 코드를 방지하고 일반적인 iOS 7 및 iOS 8 솔루션을 만들기 위해 UITableViewController에 범주를 만들어 viewDidAppear가 테이블 뷰에서 호출 될 때이 작업을 수행합니다.

- (void)viewDidAppear:(BOOL)animated 
{
    [super viewDidAppear:animated];
    [self setPopOverViewContentSize];
}

Category.h :

#import <UIKit/UIKit.h>

@interface UITableViewController (PreferredContentSize)

- (void) setPopOverViewContentSize;

@end

Category.m :

#import "Category.h"

@implementation UITableViewController (PreferredContentSize)

- (void) setPopOverViewContentSize
{
    [self.tableView layoutIfNeeded];
    int heightOfTable = [self.tableView contentSize].height;

    if (heightOfTable > 600)
        heightOfTable = 600;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0)
            self.preferredContentSize=CGSizeMake(320, heightOfTable);
        else
            self.presentingViewController.presentedViewController.preferredContentSize = CGSizeMake(320, heightOfTable);
    }
}

@end

presentingViewController작품에 대한 팁 . 내가 설정 한 경우 preferredContentSizeviewDidLoad잘못된 팝 오버 사이즈 변화에 팝 오버 리드의 다른 뷰 컨트롤러에서 탐색 백 : 이상한 행동이있다. 팝 오버 크기가 0으로 설정된 것처럼 보이지만 크기는 정확합니다. 이 경우 팝 오버는 전체 화면 높이를 차지합니다. 왜 이것이 사실인지 아십니까? 내 경험상 운영 체제에서 화면 크기보다 큰 크기를 지정할 수 없기 때문에 구현 된 600 포인트에 대한 제한이 없습니다.
테스트

스택을 다시 탐색 할 때 코드가 실행되도록 viewDidLoad 대신 viewDidAppear를 사용해보십시오.
Wesley Filleman 2014

그게 제가 취한 방법입니다. 하지만 당신이 이것을 설정하면 왜 작동하지 않는지 모르겠습니다 viewDidLoad...
테스트

1
불행히도 그것은 Apple이 뷰 스택을 작성한 방식이 아닙니다. 이러한 contentSize 값은 viewController가 뷰에서 숨겨지면 실제로 유지되지 않습니다. 그렇기 때문에 푸시 또는 팝으로 뷰가 포 그라운드로 나올 때마다 팝 오버를 "알려 주어야"합니다. 팝 오버가이 정보를 유지해야한다고 생각하는 경우 Apple에 버그 보고서를 제출하는 것이 좋습니다.
Wesley Filleman 2014-12-12

12

이것은 krasnyk 의 대답 에 대한 개선입니다 .
솔루션은 훌륭하지만 매끄럽게 애니메이션되지는 않습니다.
약간의 개선은 멋진 애니메이션을 제공

합니다. - (void) forcePopoverSize메서드의 마지막 줄을 제거합니다 .

- (void) forcePopoverSize {
    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
    self.contentSizeForViewInPopover = fakeMomentarySize;
}

- (void)viewWillAppear:(BOOL)animated메소드에 [self forcePopoverSize]를 넣으십시오 .

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self forcePopoverSize];
}

마지막으로 - (void)viewDidAppear:(BOOL)animated방법 에서 원하는 크기를 설정하십시오 .

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    self.contentSizeForViewInPopover = currentSetSizeForPopover;
}

8

에서 콘텐츠 크기를 다시 설정해야합니다 viewWillAppear. popovercontroller의 크기를 설정하는 delagate 메서드를 호출합니다. 나도 같은 문제가 있었다. 그러나 이것을 추가하면 문제가 해결되었습니다.

한 가지 더 : 5 미만의 베타 버전을 사용하는 경우 팝 오버를 관리하기가 더 어려워집니다. 베타 버전 5에서 더 친근한 것 같습니다. 최종 버전이 나간 것이 좋습니다. ;)

도움이 되었기를 바랍니다.


나도 이거 싫어. 저도 잡았습니다. Apple : navcontroller로 팝 오버를 지정된 크기로 잠글 수없는 이유는 무엇입니까?!
Jann

2
콘텐츠 크기를 설정하는 viewWillAppear것이 효과가 없었습니다. 팝 오버의 크기를 명시 적으로 설정하면 효과가 있었지만 빈민가입니다.
Ben Zotto

@quixoto 나는 당신의 문제가 무엇인지는 아니지만 여전히 똑같은 것을 사용하고 완벽하게 작동합니다.
Madhup Singh Yadav

5

에서 -(void)viewDidLoad당신이 탐색 컨트롤러에서 사용하는 모든 뷰 컨트롤러, 추가 :

[self setContentSizeForViewInPopover:CGSizeMake(320, 500)];

3

다시 탐색되는 뷰 컨트롤러의 viewWillDisappear : (BOOL) animated 메서드에서 크기를 재설정합니다.

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    CGSize contentSize = [self contentSizeForViewInPopover];
    contentSize.height = 0.0;
    self.contentSizeForViewInPopover = contentSize;
}

그런 다음 다시 탐색중인보기가 나타나면 크기를 적절하게 재설정합니다.

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    CGSize contentSize;
    contentSize.width = self.contentSizeForViewInPopover.width;
    contentSize.height = [[self.fetchedResultsController fetchedObjects] count] *  self.tableView.rowHeight;
    self.contentSizeForViewInPopover = contentSize;
}

흠 .. 재설정이 필요하지 않았습니다. 모든 뷰 컨트롤러의 모든 viewWillAppear에 self.contentSizeForViewInPopover = self.view.frame.size를 넣습니다.
alones

fetchedResultsController fetchedObjects에 무엇을 넣을까요? 작동하지 않습니다
Jules

2

iOS 8의 경우 다음이 작동합니다.

- (void) forcePopoverSize {
    CGSize currentSetSizeForPopover = self.preferredContentSize;
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
    self.preferredContentSize = fakeMomentarySize;
    self.navigationController.preferredContentSize = fakeMomentarySize;
    self.preferredContentSize = currentSetSizeForPopover;
    self.navigationController.preferredContentSize = currentSetSizeForPopover;
}

BTW 나는 이것이 이전 iOS 버전과 호환되어야한다고 생각합니다 ...


iOS7 SDK로 컴파일 된 iOS8의 앱에 문제가 있습니다. 감사합니다.

회전을 변경할 때 사이징 해결하기 위해이 메소드를 호출 willTransitionToTraitCollection에서, animateAlongsideTransition종료 블록.
Geva

2
Well i worked out. Have a look.


Made a ViewController in StoryBoard. Associated with PopOverViewController class.


import UIKit

class PopOverViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        self.preferredContentSize = CGSizeMake(200, 200)

        self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "dismiss:")

    }

    func dismiss(sender: AnyObject) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}




See ViewController:


//
//  ViewController.swift
//  iOS8-PopOver
//
//  Created by Alvin George on 13.08.15.
//  Copyright (c) 2015 Fingent Technologies. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate
{
    func showPopover(base: UIView)
    {
        if let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("popover") as? PopOverViewController {


            let navController = UINavigationController(rootViewController: viewController)
            navController.modalPresentationStyle = .Popover

            if let pctrl = navController.popoverPresentationController {
                pctrl.delegate = self

                pctrl.sourceView = base
                pctrl.sourceRect = base.bounds

                self.presentViewController(navController, animated: true, completion: nil)
            }
        }
    }

    override func viewDidLoad(){
        super.viewDidLoad()
    }

    @IBAction func onShow(sender: UIButton)
    {
        self.showPopover(sender)
    }

    func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
        return .None
    }
}


Note: The func showPopover(base: UIView) method should be placed before ViewDidLoad. Hope it helps !

1

나를 위해이 솔루션이 작동합니다. 이것은 UITableViewController를 확장하는 내 뷰 컨트롤러의 메서드이며 UINavigationController의 루트 컨트롤러입니다.

-(void)viewDidAppear:(BOOL)animated {
     [super viewDidAppear:animated];
     self.contentSizeForViewInPopover = self.tableView.bounds.size;
}

그리고 탐색 스택에 푸시 할 뷰 컨트롤러의 콘텐츠 크기를 설정하는 것을 잊지 마십시오.

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
    dc = [[DetailsController alloc] initWithBookmark:[[bookmarksArray objectAtIndex:indexPath.row] retain] bookmarkIsNew:NO];
    dc.detailsDelegate = self;
    dc.contentSizeForViewInPopover = self.contentSizeForViewInPopover;
    [self.navigationController pushViewController:dc animated:YES]; 
 }

1

어셈블러를 상상할 수 있다면 이것이 약간 더 낫다고 생각합니다.

-(무효) forcePopoverSize {
    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    self.contentSizeForViewInPopover = CGSizeMake (0, 0);
    self.contentSizeForViewInPopover = currentSetSizeForPopover;
}

2
더 나은 사용하는 것 CGSizeZero대신에 자신에 의해 그것을 만드는CGSizeMake(0,0)
줄리안 크롤

1

허용 대답은 내가 내 자신의 서브 클래스를 생성 한 무슨 짓 아이폰 OS 8. 벌금을 작동하지 않는 경우 UINavigationController가 팝 오버에 사용하고 메소드를 오버라이드 (override) preferredContentSize이런 식으로 :

- (CGSize)preferredContentSize {
    return [[self.viewControllers lastObject] preferredContentSize];
}

또한 forcePopoverSize(@krasnyk에 의해 구현 된 메서드) 를 호출하는 대신 viewDidAppear앞서 언급 한 탐색 (팝 오버에서)을위한 대리자로 viewController (팝 오버를 표시하는)를 설정하고 다음에서 수행 (강제 메서드가 수행하는 작업)을 결정했습니다.

-(void)navigationController:(UINavigationController *)navigationController
      didShowViewController:(UIViewController *)viewController 
                   animated:(BOOL)animated  

전달 된 viewController. 한 가지 중요한 것은, 애니메이션이 매끄럽지 않아도되는 경우 메서드 forcePopoverSize에서 수행하는 것이 UINavigationControllerDelegate좋습니다 viewDidAppear. 그러면 .


왜 아래로 투표합니까? :) 그냥 의견보다는 어쩌면 약간의 피드백 다른
줄리안 크롤

안녕하세요 @ JulianKról,이 stackoverflow.com/questions/28112617/…을 볼 수 있습니까? , 저도 같은 문제가 있습니다.
Ranjit 2015 년

감사합니다. 도움이되었습니다. 문제는 navigationController preferredContentSize와 visibleVC preferredContentSize를 업데이트해야한다는 점을 댓글 상단에 분명히 밝히고 싶을 수 있습니다. 따라서 둘 다 직접 설정하는 것도 작동합니다.
Michael Kernahan 2015

0

나는 같은 문제에 직면했지만 viewWillAppear 또는 viewWillDisappear 메서드에서 contentsize를 설정하고 싶지 않습니다.

AirPrintController *airPrintController = [[AirPrintController alloc] initWithNibName:@"AirPrintController" bundle:nil];
airPrintController.view.frame = [self.view frame];
airPrintController.contentSizeForViewInPopover = self.contentSizeForViewInPopover;
[self.navigationController pushViewController:airPrintController animated:YES];
[airPrintController release];

해당 컨트롤러를 navigationController에 푸시하기 전에 해당 컨트롤러의 contentSizeForViewInPopover 속성을 설정하십시오.


0

나는 다음을 viewdidappear에 넣음으로써 운이 좋았습니다.

[self.popoverController setPopoverContentSize:self.contentSizeForViewInPopover animated:NO];

다른 크기의 팝 오버를 밀거나 터뜨리는 경우에는 잘 움직이지 않을 수 있습니다. 하지만 제 경우에는 완벽하게 작동합니다!


0

당신이해야 할 일은 :

-popOvers contentView의 viewWillAppear 메소드에서 아래 주어진 스 니펫을 추가하십시오. popOver가 처음로드 될 때 크기를 지정해야합니다.

CGSize size = CGSizeMake(width,height);
self.contentSizeForViewInPopover = size;

0

처음에는 popoverContentSize = CGSizeMake (320, 600) 인 팝 오버 컨트롤러에이 문제가 있었지만 ContentViewController (UINavigationController)를 탐색 할 때 더 커질 것입니다.

내비게이션 컨트롤러는 사용자 정의 UITableViewControllers 만 밀고 팝했기 때문에 사용자 정의 테이블 뷰 컨트롤러 클래스의 viewDidLoad에서 self.contentSizeForViewInPopover = CGSizeMake (320, 556)를 설정했습니다.

44 개 더 적은 픽셀은 Nav 컨트롤러의 탐색 모음을 설명하기위한 것이며 이제 더 이상 문제가 없습니다.


0

이것을 팝 오버 안에 밀어 넣는 모든 뷰 컨트롤러에 넣으십시오.

CGSize currentSetSizeForPopover = CGSizeMake(260, 390);
CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f,
                                      currentSetSizeForPopover.height - 1.0f);
self.contentSizeForViewInPopover = fakeMomentarySize;
self.contentSizeForViewInPopover = currentSetSizeForPopover;

viewwillAppear method. 및 currentSetSizeForPopover에서 원하는 크기를 설정합니다.
alok

0

동일한 문제에 직면하고 UIPopoverController의 초기화가 배치되기 전에 콘텐츠보기 크기를 탐색 컨트롤러 및보기 컨트롤러로 설정하여 수정했습니다.

     CGSize size = CGSizeMake(320.0, _options.count * 44.0);
    [self setContentSizeForViewInPopover:size];
    [self.view setFrame:CGRectMake(0.0, 0.0, size.width, size.height)];
    [navi setContentSizeForViewInPopover:size];

    _popoverController = [[UIPopoverController alloc] initWithContentViewController:navi];

0

이 중 어느 것도 나를 위해 일하지 않았기 때문에 다른 솔루션을 제공하고 싶습니다.

나는 실제로 이것을 https://github.com/nicolaschengdev/WYPopoverController 와 함께 사용하고 있습니다.

처음으로 팝업을 호출 할 때 이것을 사용하십시오.

if ([sortTVC respondsToSelector:@selector(setPreferredContentSize:)]) {
   sortTVC.preferredContentSize = CGSizeMake(popoverContentSortWidth,
        popoverContentSortHeight);
}
else 
{
   sortTVC.contentSizeForViewInPopover = CGSizeMake(popoverContentSortWidth, 
        popoverContentSortHeight);
}

그런 다음 그 팝업에서 이것을 사용하십시오.

-(void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:YES];

  if ([self respondsToSelector:@selector(setPreferredContentSize:)]) {
    self.preferredContentSize = CGSizeMake(popoverContentMainWidth, 
        popoverContentMainheight);
  }
  else 
  {
    self.contentSizeForViewInPopover = CGSizeMake(popoverContentMainWidth, 
        popoverContentMainheight);
  }
}

-(void)viewDidDisappear:(BOOL)animated {
 [super viewDidDisappear:YES];

self.contentSizeForViewInPopover = CGSizeZero;

}

그런 다음 하위보기에 대해 반복합니다 ...


0

이것은 iOS7에서이를 수행하는 올바른 방법입니다. 탐색 스택의 각 뷰 컨트롤러에서 viewDidLoad에서 선호하는 콘텐츠 크기를 설정합니다 (한 번만 수행됨). 그런 다음 viewWillAppear에서 팝 오버 컨트롤러에 대한 참조를 얻고 거기에서 contentSize를 업데이트하십시오.

-(void)viewDidLoad:(BOOL)animated
{
    ...

    self.popoverSize = CGSizeMake(420, height);
    [self setPreferredContentSize:self.popoverSize];
}

-(void)viewWillAppear:(BOOL)animated
{
    ...

    UIPopoverController *popoverControllerReference = ***GET REFERENCE TO IT FROM SOMEWHERE***;
    [popoverControllerReference setPopoverContentSize:self.popoverSize];
}

0

@krasnyk 솔루션은 이전 iOS 버전에서는 잘 작동했지만 iOS8에서는 작동하지 않았습니다. 다음 솔루션이 저에게 효과적이었습니다.

    - (void) forcePopoverSize {
        CGSize currentSetSizeForPopover = self.preferredContentSize;
       //Yes, there are coupling. We need to access the popovercontroller. In my case, the popover controller is a weak property in the app's rootVC.
        id mainVC = [MyAppDelegate appDelegate].myRootVC;
        if ([mainVC valueForKey:@"_myPopoverController"]) {
            UIPopoverController *popover = [mainVC valueForKey:@"_myPopoverController"];
            [popover setPopoverContentSize:currentSetSizeForPopover animated:YES];
        }
    }

최상의 솔루션은 아니지만 작동합니다.

새로운 UIPopoverPresentationController에도 크기 조정 문제가 있습니다.


1
아마도 AppDelegate 속성에서 뷰 컨트롤러에 도달하는 대신 내 솔루션을 고려하십시오 (더 깔끔한 것 같습니다)
Julian Król

예, 이것은 기존 코드베이스를 수정하지 않고 가장 빠른 솔루션이었습니다. Btw vl 시도 UR 솔루션
Clement Prem 2014 년

0

preferredContentSize에서 NavigationController 의 속성 을 설정해야합니다 viewWillAppear.

-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationController.preferredContentSize = CGSizeMake(320, 500);}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.