2013-11-23 3 views
0

мне нужно интегрировать PaintCode фрагменты в XCode, но до сих пор я не вижу результат в тренажере, вот фрагмент кода для прямоугольника:Как интегрировать PaintCode фрагменты в XCode (IOS 6)

// Rounded Rectangle Drawing 
UIBezierPath *roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(45.5, 89.5, 232, 273) cornerRadius:3]; 
[[UIColor whiteColor] setFill]; 
[roundedRectanglePath fill]; 
[[UIColor blackColor] setStroke]; 
[roundedRectanglePath setLineWidth: 10]; 
[roundedRectanglePath stroke]; 

Я использовал функцию пустот в файле реализации:

- (void) drawRect: (CGRect)rect 
{ 
    // snippet goes here 
} 
+0

Это было сделано в подклассе UIView? Была ли отображаемая часть иерархии представлений на экране? –

+0

Не в подклассе, на виду контроллер, но я попробовал подклассифицировать его, по-прежнему не работает. –

+0

'drawRect:' работает в режимах просмотра не в представлении. –

ответ

1

PaintCode сгенерированный код должен быть обернут в drawRect: методом UIView подкласса.

Вы также должны:

Импортируйте файл заголовка подкласса в UIViewController, что вы, кажется, работает с, т.е. #import "OnScreenGraphics.h"

Создать экземпляр класса, например

// add a subview to fill the entire view; your requirements 
// may be different, of course 
OnScreenGraphics *fancyView = [[OnScreenGraphics alloc] initWithFrame:self.view.bounds]; 
[[self view] addSubview:fancyView]; 

Редактировать 2013-11-24 07-33-25

#import <UIKit/UIKit.h> 

@interface OnScreenGraphics : UIView 

@end 

#import "OnScreenGraphics.h" 

@implementation OnScreenGraphics 

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if(!self) return nil; 

    self.backgroundColor = [UIColor clearColor]; 

    return self; 
} 

- (void)drawRect:(CGRect)rect{ 
    UIBezierPath *roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(45.5, 89.5, 232, 273) cornerRadius:3]; 
    [[UIColor clearColor] setFill]; 
    [roundedRectanglePath fill]; 
    [[UIColor blackColor] setStroke]; 
    [roundedRectanglePath setLineWidth: 10]; 
    [roundedRectanglePath stroke]; 
} 

@end 

And in your view controller implementation: 

@implementation AKDMoreDetailViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    OnScreenGraphics *fancyView = [[OnScreenGraphics alloc] initWithFrame:self.view.bounds]; 
    [[self view] addSubview:fancyView]; 

} 

// etc. 

@end 

Когда я выполнить это в тестовом проекте, я вижу:

rectangle-image

Теперь, все это говорит о том, что подсвечивание подсветки, по-видимому, охватывает кнопку, которую вы хотите выделить; так что даже если вы можете увидеть кнопку, он может не реагировать на события нажатия, если не отключить взаимодействие с пользователем на этой точке зрения fancyView.userInteractionEnabled = NO;

+0

Спасибо @NSBum, теперь я вижу прямоугольник, но я не вижу другого приложения, т. Е. Идея заключалась в том, чтобы нарисовать прямоугольник сверху. Я попытался с initWithFrame: CGRectMake (45.5, 89.5, 232, 273), но это просто дает мне черный прямоугольник. –

+0

Возможно, вы могли бы описать или проиллюстрировать, как вы хотите, чтобы представление выглядело. – FluffulousChimp

+0

Я хочу, чтобы в представлении был прозрачно заполненный прямоугольник (clearColor, я полагаю), например. поверх ранее существующей кнопки (сделанной с помощью Interface Builder), в основном, чтобы выделить ее. –

0

, если вы просто хотите сделать быстрый показ PaintCode фрагментах попробовать

https://github.com/kaishin/Verbena

встроенная графическая карта, созданная для UIImage - полезна с PaintCode

Смежные вопросы