Я создал представление, которое содержит 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, и материала по этому вопросу мало.Если бы кто-то мог указать мне правильное направление по обеим этим проблемам, я был бы очень признателен.
Спасибо!