CGGradient не отображается (не использует интерфейсный конструктор), и кнопки UIB не могут быть вызваны - PullRequest
0 голосов
/ 25 апреля 2011

Я создал представление, которое содержит CGGradient:

// Bar ContextRef
CGRect bar = CGRectMake(0, screenHeight-staffAlignment, screenWidth, barWidth);
CGContextRef barContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(barContext);
CGContextClipToRect(barContext,bar);    

// Bar GradientRef
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat components[16] = { 1.0,1.0,1.0,0.0, 0.0,0.0,0.0,1.0, 0.0,0.0,0.0,1.0, 1.0,1.0,1.0,0.0}; 
CGFloat locations[4] = {0.95,0.85,0.15,0.05};
size_t count = 4;
CGGradientRef gradientRef = CGGradientCreateWithColorComponents(colorSpace, components, locations, count);

// Draw Bar
CGPoint startPoint = {0.0,0.0};
CGPoint endPoint = {screenWidth,0.0};
CGContextDrawLinearGradient(barContext, gradientRef, startPoint, endPoint, 0);
CGContextRestoreGState(barContext);     

Этот код вызывается в методе drawRect UIView.Затем я использую UIViewController для доступа к созданному представлению.

- (void)loadView {

MainPageView *mpView = [[MainPageView alloc] initWithFrame:[window bounds]];
[self setView:mpView];
[mpView release];

}

и отображается на экране через appDelegate:

mpViewController = [[MainPageViewController alloc] init];   
[window addSubview:[mpViewController view]];

[window makeKeyAndVisible];

UIView содержит больше объектов, такие как UIButtons, которые видны.Я предполагаю, потому что они добавлены как подпредставление.Но я не могу понять, как добавить CGGradient в качестве подпредставления?Это должно быть?Есть ли другая причина, по которой CGGradient не виден?

Я также не получаю функциональность на кнопках UIB.Я думаю, это из-за того, где я добавил кнопки UIB в представление.Нужно ли добавлять кнопки в UIViewController или appDelegate, чтобы иметь функциональность.Извините, что задаю простые вопросы, но я пытаюсь завершить программирование без Interface Builder, и материала по этому вопросу мало.Если бы кто-то мог указать мне правильное направление по обеим этим проблемам, я был бы очень признателен.

Спасибо!

1 Ответ

1 голос
/ 07 мая 2011

Функциональность кнопок была потеряна из-за того, что рамка была слишком большой, но кнопки все еще были видны, потому что фон был прозрачнымЦвет

...