Как использовать функции perl 5.10 внутри отладчика?

Нет, имя функции не имеет значения (т. Е. Оно не должно совпадать с маршрутом), если у вас не более одной функции с одинаковым именем (тогда вы получите реальную ошибку при запуске сервер)

AssertionError: View function mapping is overwriting an existing endpoint function

, но что именно выполняет функция

Это немного сложнее, чем, но в конце дня фляга держит словарь как отображение между «конечной точкой» (именем функции) и объектом функции (именно поэтому имена функций должны быть уникальными):

self.view_functions[endpoint] = view_func

Он также сохраняет url_map для сопоставления маршруты к функциям:

Map([<Rule '/route_a' (OPTIONS, GET, HEAD) -> func_a>,
     <Rule '/route_b' (OPTIONS, GET, HEAD) -> func_b>,
     <Rule '/static/<filename>' (OPTIONS, GET, HEAD) -> static>])
{}
55
задан Bhavin Ramani 22 December 2016 в 12:40
поделиться

4 ответа

Вот код, который работает ...

- (IBAction) renderScrollViewToImage
{
    UIImage* image = nil;

    UIGraphicsBeginImageContext(_scrollView.contentSize);
    {
        CGPoint savedContentOffset = _scrollView.contentOffset;
        CGRect savedFrame = _scrollView.frame;

        _scrollView.contentOffset = CGPointZero;
        _scrollView.frame = CGRectMake(0, 0, _scrollView.contentSize.width, _scrollView.contentSize.height);

        [_scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];     
        image = UIGraphicsGetImageFromCurrentImageContext();

        _scrollView.contentOffset = savedContentOffset;
        _scrollView.frame = savedFrame;
    }
    UIGraphicsEndImageContext();

    if (image != nil) {
        [UIImagePNGRepresentation(image) writeToFile: @"/tmp/test.png" atomically: YES];
        system("open /tmp/test.png");
    }
}

Последние несколько строк просто записывают изображение в /tmp/test.png, а затем открывают его в Preview.app. Очевидно, это работает только в Симуляторе: -)

Завершите проект в ScrollViewScreenShot репозитории Github

110
ответ дан 26 November 2019 в 17:40
поделиться

В iOS 13 я имею, столкнулся с проблемой, что эта строка не будет работать

frame = CGRect(x: 0, y: 0, width: contentSize.width, height: contentSize.height)

для устранения проблемы, я удаляю scrollview из родителя и затем присоединяю в после делания снимка экрана.

1
ответ дан 26 November 2019 в 17:40
поделиться

Вот версия ответа Stefan Arentz, который работает в iOS 13.

UIImage* image = nil;

UIScrollView *clonedView = (UIScrollView*) [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:_scrollView]];

UIGraphicsBeginImageContextWithOptions(clonedView.contentSize, NO, 0);
{
    clonedView.contentOffset = CGPointZero;
    clonedView.frame = CGRectMake(0, 0, clonedView.contentSize.width, clonedView.contentSize.height);

    [clonedView.layer renderInContext: UIGraphicsGetCurrentContext()];

    image = UIGraphicsGetImageFromCurrentImageContext();
}
UIGraphicsEndImageContext();
0
ответ дан 26 November 2019 в 17:40
поделиться

Я не знаю многого, но могу предположить, что если мы установим размер contextRect следующим образом для ландшафта, это может сработать хорошо:

  CGRect contextRect  = CGRectMake(0, 0, 1004, 768*2);

Потому что этот contextRect будет определять размер UIGraphicsBeginImageContext, поэтому я надеюсь, что удвоение высоты может решить вашу проблему

-1
ответ дан 26 November 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: