1. 程式人生 > >iOS:類似於網易雲音樂的重新整理條目顯示彈框

iOS:類似於網易雲音樂的重新整理條目顯示彈框

//
//  ShowMessageView.m
//  ShowMessageTest
//
//  Created by 夏遠全 on 2018/3/22.
//  Copyright © 2018年 夏遠全. All rights reserved.
//

#import "ShowMessageView.h"
#import <Masonry.h>

#define isIphoneX_YML (kScreenWidth == 375.0 && kScreenHeight == 812.0) //沒有橫屏模式才能這麼判斷
#define kStatusBarHeight (isIphoneX_YML ? 44.0 : 20.0)
#define
kNavigationHeight 44.0 #define kNavigationAndStatusBarHeight (kStatusBarHeight + kNavigationHeight) @interface ShowMessageView () @property (nonatomic, strong) UILabel *messageLabel; @property (nonatomic, assign) CGFloat messsageWidth; @end @implementation ShowMessageView #pragma mark - life cycle +(instancetype)createShowMessageViewInViewController:(UIViewController *)vc { ShowMessageView
*messageView = [[self alloc] initWithFrame:CGRectMake(0, kNavigationAndStatusBarHeight-40, 200, 40)]; messageView.backgroundColor = [UIColor clearColor]; messageView.alpha = 0; messageView.hidden = YES; messageView.centerX = vc.navigationController.navigationBar.centerX; [messageView setShadowForView:messageView]; [vc.navigationController.navigationBar addSubview:messageView]; [vc.navigationController.navigationBar sendSubviewToBack:messageView]; [messageView setup];
return messageView; } +(instancetype)createShowMessageViewInViewController:(UIViewController *)vc customNav:(UIView *)customNav;{ ShowMessageView *messageView = [[self alloc] initWithFrame:CGRectMake(0, kNavigationAndStatusBarHeight-40, 200, 40)]; messageView.backgroundColor = [UIColor clearColor]; messageView.alpha = 0; messageView.hidden = YES; messageView.centerX = customNav.centerX; [ShadowUtility setShadowForView:messageView]; [customNav addSubview:messageView]; [customNav sendSubviewToBack:messageView]; [messageView setup]; return messageView; } -(void)setup { [self setDefalut]; [self addSubViews]; [self setupSubviewsConstraints]; } -(void)setDefalut { } #pragma mark - add subViews -(void)addSubViews { [self addSubview:self.messageLabel]; } #pragma mark - layout subviews -(void)setupSubviewsConstraints { [self.messageLabel mas_remakeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.mas_centerX); make.centerY.equalTo(self.mas_centerY); make.height.equalTo(self.mas_height); if (self.messsageWidth > 0) { make.width.equalTo(@(MAX(100, self.messsageWidth)+20)); } }]; } #pragma mark - event response #pragma mark - public methods -(void)showMessage:(NSString *)message{ self.messageLabel.text = message; if (message.length > 0) { self.messsageWidth = [message boundingRectWithSize:CGSizeMake(MAXFLOAT, 40) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]} context:nil].size.width; [self setupSubviewsConstraints]; } if (self.alpha == 0) { self.hidden = NO; [UIView animateWithDuration:0.8 animations:^{ self.alpha = 1.0; self.transform = CGAffineTransformMakeTranslation(0,40+10); } completion:^(BOOL finished) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [UIView animateWithDuration:0.3 animations:^{ self.alpha = 0; } completion:^(BOOL finished) { self.hidden = YES; self.transform = CGAffineTransformIdentity; }]; }); }]; } } -(void)hideMessage{ self.alpha = 0; self.transform = CGAffineTransformIdentity; } #pragma mark - private methods - (void)setShadowForView:(UIView *)view { view.layer.shadowColor = HEXCOLOR(0xaeaeae).CGColor; view.layer.shadowOffset = CGSizeMake(0, 0); view.layer.shadowRadius = 4.0; view.layer.shadowOpacity = 0.2; view.layer.shouldRasterize = YES; view.layer.rasterizationScale = [UIScreen mainScreen].scale; } #pragma mark - getters and setters -(UILabel *)messageLabel{ if (!_messageLabel) { _messageLabel = [[UILabel alloc] init]; _messageLabel.layer.cornerRadius = 20; _messageLabel.layer.masksToBounds = YES; _messageLabel.font = [UIFont systemFontOfSize:16]; _messageLabel.textAlignment = NSTextAlignmentCenter; _messageLabel.textColor = [UIColor whiteColor]; _messageLabel.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7]; } return _messageLabel; } @end

相關推薦

iOS類似音樂重新整理條目顯示

// // ShowMessageView.m // ShowMessageTest // // Created by 夏遠全 on 2018/3/22. // Copyright © 2018年 夏遠全. All rights reserved. // #import "ShowMessageV

Web前端博客美化四、音樂單曲播放器

mar inter 自動播放 adding opacity 喜歡 cnblogs city size 1、頁面定制CSS代碼 /*3、音樂播放器*/ .content-wrap { overflow-y: scroll; -webkit-overflow-s

iOS音樂首頁源碼、動畫引擎源碼等

圖像 自帶 集成 ref ole hololens demo 拖拽 基礎 iOS精選源碼 自己維護的框架, 超級多功能 圖片選擇SDK:支持多選,相冊選擇,預覽,網絡圖預覽 一款可以簡單實現長按拖拽重排的 UICe

第二次作業音樂案例分析

他也 center 大學 www. 榜單 粉絲 很好 無法使用 內容 你選擇的產品是? 網易雲音樂 為什麽選擇該產品作為分析? 自己非常喜歡聽音樂,用過了網易雲音樂之後,覺得很好用。 該產品是怎麽誕生的(在什麽樣的背景下)?

第二次作業軟件分析之音樂

是什麽 快速 好處 市場 理由 皮膚 其他 開發 tro 你選擇的產品是? 網易雲音樂 為什麽選擇該產品作為分析? 網易雲音樂是一款自己比較熟悉的軟件,平時聽音樂都用它。 該產品是怎麽誕生的(在什麽樣的背景下)? 作為現代信

第2次作業音樂軟件簡單分析

部分 同時 存在 其他 arc family inux 在線搜索 www. 1介紹產品相關信息 (1)你選擇的產品是? 網易雲音樂 (2)為什麽選擇該產品作為分析? 網易雲音樂在我下載使用兩天之後便能夠讓我毅然決然地卸載掉了使用十多年的酷狗音樂 (3)該產品是怎麽誕生的(在

iOS 開發仿音樂歌詞海報

atomic keyword draw write mode () 解析 efault album 使用網易雲音樂也是一個巧合,我之前一直使用QQ音樂聽歌,前

音樂評論爬蟲(2)歌曲的全部評論

ima cbc 原理分析 nbsp oss 處理 oop win 接下來 用過網易雲音樂聽歌的朋友都知道,網易雲音樂每首歌曲後面都有很多評論,熱門歌曲的評論更是接近百萬或者是超過百萬條.現在我就來分享一下如何爬取網易雲音樂歌曲的全部評論,由於網易雲音樂的評論都做了混淆加密處

推薦一個高大上的音樂命令行播放工具musicbox

setup.py 根據 load 開發 .py 排行 ogr class 圖片 網易雲音樂上有很多適合程序猿的歌單,但是今天文章介紹的不是這些適合程序員工作時聽的歌,而是一個用Python開發的開源播放器,專門適用於網易雲音樂的播放。這個播放器的名稱為MusicBox, 特

響鈴戰略領投音樂後,百度的內容生態站上新高點

  文|曾響鈴 來源|科技向令說(xiangling0815)   百度內容生態動作不斷。   10月12日,百度宣佈戰略領投網易雲音樂新一輪融資,其他投資方包括泛大西洋投資集團(General Atlantic)、博裕資本等,其中,百度與

推薦一個高大上的音樂命令列播放工具musicbox

網易雲音樂上有很多適合程式猿的歌單,但是今天文章介紹的不是這些適合程式設計師工作時聽的歌,而是一個用Python開發的開源播放器,專門適用於網易雲音樂的播放。這個播放器的名稱為MusicBox, 特色是用命令列版本執行音樂的播放。 github地址: https://github.com/darkness

iOS轉場窗、音樂動效、圓環取色器、Loading效果等原始碼

iOS精選原始碼 view controller transition and popover (控制器轉場和彈窗) UITableView頭部懸停+UITableView側滑巢狀 一行程式碼整合時間選擇器 iOS仿滴滴時間選擇picker BMMusic

音樂評論爬蟲(1)全部熱門歌曲及其 id 號

今天我給大家介紹一下用Python爬取網易雲音樂全部歌手的熱門歌曲.由於歌手個人主頁的網頁原始碼中還嵌入了一個子網頁(框架原始碼裡面包含了我們需要的資訊),因此我們不能使用requests庫來爬取,而使用selenium,接下來,讓我詳細講解整個爬取過程. 一,構造歌手個人主

音樂“王牌冤家”使用者評論評論爬蟲及情感分析(SnowNLP)

李榮浩上週發的《耳朵》專輯,你萌聽了嗎?小編真的超級喜歡“王牌冤家”這首歌,在新說唱聽了李老師的那幾句就一直念念不忘,這一週可是一直單曲迴圈中。恰好前兩天看了SnowNLP的一點東西,所以,這一次基於這首歌的評論,來做個非常easy的情感分析。文字資訊是選取的網易雲音樂下的評

Python3下載專題一下載音樂

一:開啟網易雲音樂,在搜尋框內輸入歌曲名稱,如"海闊天空" 二:選擇第一個,並開啟,這時的url = “https://music.163.com/#/song?id=400162138” 記住id:400162138 三:網易提供的外部下載連結:“http://music.163.co

Flutter仿音樂播放介面

寫在前頭 本來是要做一個仿網易雲音樂的flutter專案,但是因為最近事情比較多,專案週期跨度會比較長,因此分幾個步驟來完成。這是仿網易雲音樂專案系列文章的第一篇。沒有完全照搬網易雲音樂的UI,借鑑了其中的黑膠唱機動畫。 先貼上專案地址 github.com/KinsomyJS/f… 初步效果圖

爬取音樂“三部曲”(一)爬取歌手資訊!

提到歌神張學友,大家可能不會陌生或者說是如雷貫耳,他可是有著逃犯殺手之稱,這不明天1月11號是他2019世界巡迴演唱會《香港站》的開辦日期,不知香港警方有沒有做好抓逃犯的準備【手動滑稽】。對於歌神明天的演唱會,小編其實挺嚮往的,只是奈何年底了,天天要工作,作為一個程式猿,這也是沒辦法的,為了排遣內心

爬取音樂“三部曲”(三)輕鬆下載音樂歌曲!

本文是承接前兩文章而來,前兩篇文章我們收集了歌手資訊和歌詞,可是光有歌手資訊和歌詞沒有歌曲怎麼行,沒有歌曲怎麼知道音調,這讓人怎麼學?怎麼聽?這不耍流氓嘛?為了向大家證明小編不是耍流氓,是耍無賴,我決定教大家直接把網易雲音樂歌手的熱門歌曲全部免費下載下來。除了已經下架不在網易資料庫的,其他的都能全部

爬取音樂“三部曲”(二)獲取音樂歌手歌詞!

上一篇文章爬取了歌手的姓名和歌手的 id ,這篇文章根據上篇爬取的歌手 id 來直接下載對應歌手的歌詞。這些我其實可以寫成一個大專案,把這個大專案拆成小專案一來方便大家的理解,二來小專案都會了的話,拼在一起就是一個完整的專案了。 上篇文章沒學會的也不要緊,私信小編可以獲取上次的爬取結果 c

ios音樂原始碼、動畫引擎原始碼等

iOS精選原始碼 iOS優質部落格 簡介Fastlane是一套使用Ruby寫的自動化工具集,用於iOS和Android的自動化打包、釋出等工作,可以節省大量的時間。FastlaneGithub:https:/ /github. com/fast