#xcode #uiview #uiviewcontroller #uibutton
#xcode #uiview #uiviewcontroller #uibutton
Вопрос:
Я создал представление, содержащее 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 пользовательского интерфейса. Затем я использую 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 не отображается?
Я также не понимаю функциональность UIButtons. Я предполагаю, что это из-за того, где я добавил UIButtons в представление. Нужно ли добавлять кнопки в UIViewController или AppDelegate, чтобы они имели функциональность. Извините, что задаю, казалось бы, простые вопросы, но я пытаюсь выполнить программирование без Interface Builder, а материалов по этому вопросу мало. Если бы кто-нибудь мог указать мне правильное направление по обеим этим проблемам, я был бы очень признателен.
Спасибо!
Ответ №1:
Функциональность кнопок была потеряна, потому что рамка была слишком большой, но кнопки все еще были видны, потому что фон был четким