我想問問什麼是實現以下用於iPhone的可可編碼的最佳方式。自定義播放暫停按鈕Iphone
作爲一種學習練習,我想製作一個非常簡單的MP3播放器。目前我最感興趣的部分是該播放器的自定義視覺組件。
特別是我將如何使用鼠標懸停和mousedown狀態製作自定義播放暫停按鈕?
另外,我希望根據播放/暫停按鈕顯示其播放或暫停狀態來打開和關閉「抽屜」。
當玩遊戲時,按鈕圖標變爲暫停圖標,並且抽屜滑動打開。暫停時,暫停圖標變爲播放圖標,抽屜關閉。
我應該看石英嗎?
我想問問什麼是實現以下用於iPhone的可可編碼的最佳方式。自定義播放暫停按鈕Iphone
作爲一種學習練習,我想製作一個非常簡單的MP3播放器。目前我最感興趣的部分是該播放器的自定義視覺組件。
特別是我將如何使用鼠標懸停和mousedown狀態製作自定義播放暫停按鈕?
另外,我希望根據播放/暫停按鈕顯示其播放或暫停狀態來打開和關閉「抽屜」。
當玩遊戲時,按鈕圖標變爲暫停圖標,並且抽屜滑動打開。暫停時,暫停圖標變爲播放圖標,抽屜關閉。
我應該看石英嗎?
不需要使用Quartz。
從UIButton
開始。如果要定製突出顯示時的外觀(setImage:forState:
),您只能將一個圖像分配給一個按鈕(並且它將處理突出顯示)或爲每個按鈕狀態分配不同的圖像。要實現播放和暫停之間的切換效果,只需輕按按鈕的圖像(在您的操作中爲UIControlEventTouchUpInside
),就應該更換該按鈕的圖像。
對於抽屜動畫,創建一個UIView
作爲抽屜並將其添加到您的主視圖。調整其框架,使其置於屏幕外。然後,當你想它動畫在屏幕上,用一個簡單的動畫塊:
[UIView beginAnimations:nil context:nil];
drawerView.center = CGPointMake(...); // set coordinate to the end position
[UIView commitAnimations];
嘗試在文檔中的所有這一切閱讀起來。如果您仍然有問題,請提出更具體的問題。
我已經採納了您的建議並訪問了開發人員參考中心。改變播放暫停暫停按鈕的狀態一直很輕鬆。
但是,將我的面板子視圖添加到我的UIVIEWController和動畫對我來說非常困難(objective-c新手)。
首先,當我試圖讓我的面板視圖我得到警告說,面板UIView may not respond to initWithFrame. (initwithframe is a function of UIView ?)
其次我不能將圖像添加到我的面板的UIView。我收到警告說:
warning: passing argument 1 of 'addSubview:' from distinct Objective-C type
。
最後嘗試應用動畫我的面板時,我得到的錯誤說
的UIView -commitAnimations‘和任何其他動畫相關的方法我嘗試添加」可能不響應’。
你能幫忙嗎?我認爲主要是我不明白爲什麼我得到這些「可能無法響應方法」警告,因爲我正在調用正確類型的方法(或我認爲)
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
// SET UP THE PLAY PAUSE BUTTON
playPause = [UIButton buttonWithType:UIButtonTypeCustom];
playPause.frame = CGRectMake(-20,280, 100,100);
[playPause setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
[playPause addTarget:self action:@selector(buttonPushed:)
forControlEvents:UIControlEventTouchUpInside];
playing=NO;
//SET UP THE AUDIO PLAYER
NSLog(@"Set up theAudio");
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/DumpTheChump.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
//SETUP THE BOTTOM part of the PANEL
UIImage *panelBottomImage=[UIImage imageNamed:@"panel_bottom.png"];
panelBottom=[UIView initWithFrame:(CGRectMake(-20, 280, 285, 128))];
[panelBottom addSubview:panelBottomImage];
//SETUP THE TOP PART OF THE PANEL. (THE ONE THAT SHOULD SLIDE UP AND DOWN)
UIImage *panelTopImage=[UIImage imageNamed:@"panel_top.png"];
panelTop=[UIView initWithFrame:(CGRectMake(-20, 280, 285, 128))];
[panelTop addSubview:panelTopImage];
[self.view addSubview:panelBottom];
[self.view addSubview:panelTop];
[self.view addSubview:playPause];
// 285*128
}
- (void) buttonPushed:(id)sender
{
NSLog(@"It works!");
switch (playing) {
case NO:
playing=YES;
[audioPlayer play];
[playPause setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
[panelTop beginAnimations:nil context:nil];
[panelTop setAnimationDuration:2];
[panelTop setAnimationDelegate:self];
//UIView setAnimationDidStopSelector:@selector(onAnimationC omplete:finished:context;
// set the position where button will move to
panelTop.frame = CGRectMake(-20, 100, 285, 128);
[panelTop commitAnimations];
break;
case YES:
playing=NO;
[audioPlayer pause];
[playPause setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
[playPause setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
[panelTop beginAnimations:nil context:nil];
[panelTop setAnimationDuration:2];
[panelTop setAnimationDelegate:self];
//UIView setAnimationDidStopSelector:@selector(onAnimationC omplete:finished:context;
// set the position where button will move to
panelTop.frame = CGRectMake(-20, 280, 285, 128);
[panelTop commitAnimations];
break;
default:
break;
}
}
這是一個很好的起點點。你拯救了我很多吠叫錯誤的樹時間 – dubbeat 2010-02-16 12:37:30