์ ํ : ๋ฒ๊ทธ
ํ๋ซํผ : ์๋๋ก์ด๋ 4.4 ์น๋ทฐ
Android ํ๋ซํผ์์๋ง ํญ ๊ฐ์ ์ ํํ ๋ ์ฑ์ ํฐ์ ํ๋์๊ฐ ํ์๋ฉ๋๋ค. ํก๋จ๋ณด๋๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.ํฌ๋ผ ๊ฒ์๋ฌผ http://forum.ionicframework.com/t/white-flash-appearing-when-switching-between-tabs-on-android-in-1-0-0-stable/24774
์ด ๋ฌธ์ ์ ์ํ์ ๋ํด ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น?
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
+1
์ด ๋ฌธ์ ๊ฐ ์๋ ์ต์ํ์ ์๋ฅผ ์ ๊ณตํ์ญ์์ค.
์ ์ด์จ ์ฑ(ํญ ํ ํ๋ฆฟ)์ ๋ง๋ค๊ณ ๋ฐฐ๊ฒฝ์ ํฐ์์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. Android ์ฅ์น(4.4, nexus 5์์ ํ ์คํธ)์์ ๋น๋ํ๊ณ ์คํํ๋ฉด ๋ชจ๋ ํญ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ช ๋ฐ๋ฆฌ์ด ๋์ ํฐ์ ํ๋ฆญ์ด ์์์ ์ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๊ฐ ๋ณด๊ธฐ์์ ์ฌ์ ์๋๋ ์ด์จ ํค๋ ๋ง๋ ๋๋ฌธ์ด๋ผ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ion-header-bar๋ฅผ ๊ธฐ๋ณธ ๋ ์ด์์ ํ ํ๋ฆฟ์ผ๋ก ์ฎ๊ฒผ๊ณ ๋ ์ด์ ๊น๋ฐ์์ด ํ์๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ ์์ฑ ํ๋ก์ ํธ๋ ๊ฐ ๋ณด๊ธฐ์ ํค๋ ํ์์ค์ ๋๋ฏ๋ก ๊ฑฐ๊ธฐ์์๋ ๋ณผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
'ion-header-bar's๋ ์๋์ผ๋ก ์์ฑ๋๋ฉฐ, ์ด๋์(๋ฐ ์ด๋ป๊ฒ) ์๋์ผ๋ก ์ฌ์ฉํฉ๋๊น?
@GentryRiggen ์ ์ด์จ ํ์ ๋ง๋๋ฅผ ์๋ฏธํฉ๋๊น?
@mhartington ์ด์จ ์ฌ์ด๋ ๋ฉ๋ด ์ฝํ ์ธ ๋ด๋ถ์ ์ด์จ ํญ์ด ์๋ ์ด์จ ์ฌ์ด๋ ๋ฉ๋ด๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
<ion-side-menus>
<ion-side-menu side="left" class="left-side-menu">
<ion-content drag-content="false" overflow-scroll="false" direction="y" delegate-handle="leftMenu">
<div class="list">
<a menu-close class="item item-icon-left" >Something</a>
<a menu-close class="item item-icon-left" >Something</a>
<a menu-close class="item item-icon-left" >Something</a>
</div>
</ion-content>
</ion-side-menu>
<ion-side-menu-content>
<ion-header-bar align-title="center" class="bar-positive">
<button class="button button-icon icon ion-navicon" menu-toggle="left"></button>
<div class="titles">
<h>TITLE</h1>
</div>
</ion-header-bar>
<ion-tabs class="tabs-positive tabs-icon-only dark-background">
<ion-tab>
<ion-nav-view name="tab-1"></ion-nav-view>
</ion-tab>
<ion-tab>
<ion-nav-view name="tab-2"></ion-nav-view>
</ion-tab>
<ion-tab>
<ion-nav-view name="tab-3"></ion-nav-view>
</ion-tab>
</ion-tabs>
</ion-side-menu-content>
</ion-side-menus>
์ด๋ฅผ ์ํด ion-header-bar๋ฅผ ์ฌ์ฉํ์ง ๋ง๊ณ ion-nav-bar๋ฅผ ์ฌ์ฉํ์ญ์์ค.
@mhartington 'ion-nav-bar' ์ฌ์ฉ
๊ทธ๋์ ๋น์ ์ ๊ทธ๊ฒ์ ๊ณ ์น ๊ฒ์ ์ ์ํฉ๋๊น?
Android์ฉ์ผ๋ก ์ ์๋ ionic์ ๊ฐ๋จํ ํญ "์คํํฐ"๋ ํ์ ์ฌ์ด์ ํ๋์๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ion-nav-bar๋ฅผ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ , ๋ด ํ ์คํธ์์ ๊ทธ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋์์์์ ๋ณด์ค ์ ์์ต๋๋ค.. ํญ์ ๋ฐ๊พธ๋ฉด ํฐ์ ํ๋ฉด์ด ๊น๋ฐ์ ๋๋ค.. ๋ช ๋ฐ๋ฆฌ์ด ๋์๋ง ๋ํ๋ฉ๋๋ค... ๋ฐฐ๊ฒฝ์์ ๋นจ๊ฐ, ํ๋ ๋๋ ์ด๋์ด ์์ผ๋ก ๋ ๋ช ํํ๊ฒ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด .
์ฌ๋ผ์ง๋ ํ์ ๋ชจ์์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๊น?
๊ทธ๋ ํญ์ ์ ํํ ๋ ์ ๊น ๋ํ๋๋ ํฐ์ ํ๋ฉด(์ด์จ ํจ๋ ๊ฒฝ๊ณ)์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
"์ํ"์์ "์ฑํ
"์ผ๋ก ์ฒ์ ์ ํํ ๋ ๋น๋์ค์์ ๋ช
ํํ๊ฒ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ๋งค๋ฒ ๋ํ๋ฉ๋๋ค.
@mhartington ๋ด ์ฑ(์ฌ๋ก์ฐ ๋ชจ์
)์ ๋์์์ ์ฒจ๋ถํ์ต๋๋ค.
์กฐ์น๋ฅผ ์ทจํ๊ณ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ ์ฃผ๊ณ ์ถ์ง๋ง ์ ์ด๋ ์์์ ์ด ํ์ํฉ๋๋ค. ์ด๋์๋ถํฐ ์์ํด์ผ ํฉ๋๊น?
์ ํ๋ธ ๋งํฌ : https://youtu.be/TTuNPlL6Fmg
๊ฐ์ฌ ํด์.
์ฝ๋๋ฅผ ๋ณด๋ tabSelected ํจ์(ionTab ์ง์๋ฌธ)์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
์ ํญ์ ํ์ํ๊ธฐ ์ ์ ์ด์ ํญ์ ์จ๊ธฐ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด๊ฐ ๋ง๋ ์ด ๋๋ฌ์ด ํดํน์ ํจ๊ณผ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ ์ ํ ์์ ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
$ionicViewSwitcher.viewEleIsActive(childElement, false);
ionic.bundle.js์ 55025ํ
$timeout(function () {
$ionicViewSwitcher.viewEleIsActive(childElement, false);
}, 100);
์ด๊ฒ์ ๋์๊ฒ ์ผ์ด๋๊ณ ์์ต๋๋ค.
Nexus 4์์ Android 5.1.1์ ์คํํ๊ณ ์์ต๋๋ค.
๊ทธ๊ฒ์ ์ฌํํ๋ ค๋ฉด "ํญ" ์คํํฐ ์ฑ์ ๋ง๋ค๊ณ ํ์ ๋ชจ์์ ์์์ ํ๋์์ผ๋ก ๋ณ๊ฒฝํ๋ฉด(์: -stable์ -positive๋ก ๋ณ๊ฒฝ) ๊น๋ฐ์์ด ๋ถ๋ช ํด์ง๋๋ค. ์ค์ ๋ก ํฐ์ ํ์ ํ์์ค๊ณผ ํจ๊ป ๊น๋ฐ์ด์ง๋ง ํฐ์ ๊น๋ฐ์์ ํฐ์์ ๋ณผ ์ ์์ต๋๋ค.
Android์์ ์ ํ ์๊ฐ์ 0ms๋ก ๊ฐ์ ์ ์ฉํ๋ ์คํ์ผ์ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ์ผ๋ฉฐ ์ฒจ๋ถ๋ ํฌ๋กฌ ๊ฒ์ฌ๊ธฐ๋ก ํ์ธํ๊ณ ๊ณ์ฐ๋ CSS ๊ฐ์ ๊ฒ์ฌํ์ฌ ์ฑ์ด ์ด๋ฌํ ์คํ์ผ์ ๋ชจ๋ ํค๋ ํญ๋ชฉ์ ์ ์ฉํ๋์ง ํ์ธํ์ต๋๋ค. ์คํ์ผ์ ์ ๊ฑฐํ๊ณ 0ms์์ ๋ค๋ฅธ ์ซ์(0.2ms ๋๋ 0.5ms - ์ค์ ๋ก ๊น๋ฐ์ ํจ๊ณผ๋งํผ ๋น ๋ฆ)๋ก ์ด๋ํ๋์ง ํ์ธํ์ฌ ๋ ๋ฒ ํ์ธํ์ต๋๋ค.
@didbarbosa ์์ ์ ์๋ํ์ง๋ง ๋ธ๋ผ์ฐ์ ์ Chrome๊ณผ ์ ํ ์ฑ ๋ชจ๋ $timeout์ด ์ ์๋์ง ์์๋ค๊ณ ๋ถํํ์ต๋๋ค. $timeout ๊ฐ์ ๊ธฐ๋กํ์ ๋ ์ค์ ๋ก ์ ์๋์ง ์์์ต๋๋ค.
@ lloy0076 ์ง์๋ฌธ์ ์ฃผ์ ํด์ผ ํฉ๋๋ค.
IonicModule
.directive('ionTab', [
'$compile',
'$ionicConfig',
'$ionicBind',
'$ionicViewSwitcher',
'$timeout',
function($compile, $ionicConfig, $ionicBind, $ionicViewSwitcher,$timeout) {
@didbarbosa - ์ฌ์ค ๋ด ๋ฒ์ ์ Ionic์ด ์ต์ ๋ฆด๋ฆฌ์ค๊ฐ ์๋์ ์์์ต๋๋ค. ๋ฐ๋ผ์ "bower.json"์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ต๋๋ค.
{
"์ด๋ฆ": "HelloIonic",
"๋น๊ณต๊ฐ": "์ฐธ",
"devDependencies": {
"ionic": "driftyco/ionic-bower#~1",
"platform.js": "ํ๋ซํผ#~1.3.0"
... ๊ทธ๋ฆฌ๊ณ $timeout ์๋ฃจ์ ์ด ์์ด๋ ๊น๋ฐ์์ด ์๋ค๋ ๊ฒ์ ๋ฏฟ์ผ์๊ฒ ์ต๋๊น?
CSS ์ ํ ์๋ฃจ์ ์ผ๋ก ๋์ผํ๊ฒ ์๋ํ๋ค๋ฉด ์์ฒด์ ์ผ๋ก "๊ณ ์น " ์๋ ์์ต๋๋ค. ํ์ง๋ง ์ ๋ ๋ง์ ์ฒ๋ผ ์ค์ค๋ก๋ฅผ ์์ ํ๋ ๋ฌธ์ ๋ฅผ ์ซ์ดํฉ๋๋ค.
์, ์ผ๊ฐ ๋ฆด๋ฆฌ์ค์ ํจ๊ป ์ฌ๋ผ์ง ๊ฒ ๊ฐ์ต๋๋ค.
์ข์ ์์ :)
์ฌ์ค ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ๊ณ ์ ๋์ง ์์ต๋๋ค.
๋๋ฅผ ์ํด ๊ณ ์ ๋์ง ์์์ต๋๋ค 2 :\
์ด ๋ฌธ์ ์ ๋ํ ์์์ด ์์ต๋๊น?
iOS์์๋์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
iOS์ ๊ดํ @harryzun ์ https://github.com/driftyco/ionic/issues/4395 ๋ฅผ ์ฐธ์กฐ
iOS์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
v1.1๋ก ์ ๊ทธ๋ ์ด๋ํ ํ ์ธ์ ๊ฐ Android์์๋ ์ด๊ฒ์ ์์์ฐจ๋ฆฌ๊ธฐ ์์ํ์ต๋๋ค. ์ธ์ ์์๋์๋์ง ํ์คํ์ง ์์ต๋๋ค.
๊ทธ๊ฒ์ v1 ์ฃผ์์ ์์๋์์ต๋๋ค
๋๊ตฐ๊ฐ (์์) ์์ ์ฌํญ์ด ์์ผ๋ฉด ๋ฃ๊ณ ์ถ์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฒ๊ทธ์ ๋๋ค ... ๋๊ตฌ ๋ ๋ง์ ์ ๋ณด๊ฐ ์์ต๋๊น ?? :๋ฌธ์ด:
์๋ง๋ ๊ด๋ จ์ด ์์ง๋ง ์ด์ ์ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์๊ณ ๋ฌธ์ ๊ฐ ๋๋ ํ์ ํญ ์ํ์ ๋ํ ์ํ ์ ์์์ cache: false
๋ฅผ ์ญ์ ํ๋ฉด ๋ช ๊ฐ์ง ๊ธฐ๊ดดํ ์ด์ ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ ํญ ์ค์ ์ ๋ค๋ฅธ 3๊ณณ์์ ๋ฌธ์ ์์ด ๋์ผํ ์ปจํธ๋กค๋ฌ+ํ
ํ๋ฆฟ ์ฝค๋ณด๋ก ๋์ผํ ํจํด์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ๊ทธ๋ฐ์ง ์ ํ ๋ชจ๋ฆ
๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ๋ณธ ๋ฌธ์ ์ ๋งจ ์๋๋ก ๋ด๋ ค๊ฐ๋ ๋ฐ ์ฝ๊ฐ์ ์๊ฐ์ ํ ์ ํ์ต๋๋ค. ๋ค์ ํฅ๋ฏธ๋กญ๊ณ ์ฝ๊ฐ ์์งํ ๋ถ๋ถ์ด stateChangeSuccess ์ด์ ์ ๊ฒ์์ ๊น๋ฐ์์ผ๋ก ์ด์ด์ง๋๋ค.
๋ฐ๋ผ์ ์์์ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด ์ฐ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ๋์ผํ ํจํด์ ์ฌ์ฉํ์ง๋ง ํ ๊ฐ์ง ์ค์ํ ์ฐจ์ด์ ์ด ์์ต๋๋ค. ์ด ์ํ๋ ์ค์ ๋ก ์ํ ์ ์์ API ์ง์ ํ์ธ์ ์ฌ์ฉํ์ฌ ํ์ฌ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ๋ชปํ ๋ฐฑ์๋์ ๋จ์ ์ ํด๊ฒฐํ์ต๋๋ค. ์ด ํจํด์ ์ฌ์ฉํ๋ ๋ค๋ฅธ x3 ์ํ์ ํจ๊ป ์ค๋ช ๋์ด์ผ ํฉ๋๋ค.
"์ฑํ " ์ํ๋ ํญ์ ๋ํ ๊ธฐ๋ณธ ์ํ์ ํ์ ์์ต๋๋ค. ์ด ์ํ์ ๋๋ฌํ๋ ค๋ฉด ๊ธฐ๋ณธ ๋ณด๊ธฐ์์ ํ์์ ํด๋ฆญํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ํ์ ์ฑํ ์ํ๊ฐ ๋ฉ๋๋ค. ํ์ ์์ ํ์ํ ๋ ๊ฒ์์ ๊น๋ฐ์์ด ๊ด์ฐฐ๋์ง ์์์ผ๋ฉฐ ํด๊ฒฐ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ณธ ์ํ๊ฐ ํ์๋๊ณ ์ผ๋ฐ ํ์์ด ์๋ฃ๋ฉ๋๋ค. ์ฑํ ๋ณด๊ธฐ๊ฐ ๊ธฐ๋ก์ ํ์ฌ ์ํ์ธ ํญ(๋ค๋ฅธ ํญ์์)์ผ๋ก ๋ค์ ์ด๋ํ ๋ ui-router + ionic์ ์ฆ์ ์ ํญ์ผ๋ก ์ค์์ ์คํํ์ง๋ง ํด๊ฒฐ์ด ์๋ฃ๋ ๋๊น์ง ๊ฒ์์ ํ๋ฉด์ด ํ์๋ฉ๋๋ค. .
์ด๊ฒ์ cache: false
์ ๊ฑฐํ๊ณ ๊ธฐ๋ณธ๊ฐ์ true๋ก ์ค์ ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ์ด์ ์ ๋ํด์๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋น์ ์ด ๊ทธ๊ฒ์ ๋ํด ์๊ฐํ ๋ ์๋ฒฝํ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ๊ฑด๋ ์ด๊ฒ์ ๋๊ตฐ๊ฐ๊ฐ Google์ ํตํด ์ด๊ฒ์ ์ฐ์ฐํ ๋ฐ๊ฒฌํ๋ฉด ๋ํต์ ๊ตฌํ ์ ์์ ๊ฒ์ ๋๋ค(๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก).
๋๋ ์ด๊ฒ์ ๋ค์ ์ค๊น์ง ์ถ์ ํ์ต๋๋ค.
https://github.com/driftyco/ionic/blob/af1bfef327e685585244c6051c4d38b98aa6c62a/js/angular/service/viewSwitcher.js#L194
if (renderStart && renderEnd) {
// CSS "auto" transitioned, not manually transitioned
// wait a frame so the styles apply before auto transitioning
//$timeout(onReflow, 16); <- original
onReflow(); // removes flicker
} else if (!renderEnd) {
์ ํญ์ด 16ms ํ์ ํ์๋๋๋ก ์ค์ ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ํญ์ด ์ ํ๋ ๋ ํ ํ๋ ์์ด ๊น๋ฐ์ด๋ ์์ธ์ ๋๋ค.
ํญ์ด ๊ด๋ จ๋์ด ์์ ๋ ๊ทธ ์ค์ ์์ ์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง $timeout
ํธ์ถ์ onReflow()
์ ๊ฐ๋จํ ๋ฉ์๋ ํธ์ถ๋ก ๋ฐ๊พธ๋ฉด ์ธ์ง๋ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋๊ณ ๋ ์ด์ ๊น๋ฐ์์ด ์์ต๋๋ค. ๋ค๋น๊ฒ์ด์
๋ฐ์๋ ์์ต๋๋ค.
@mhartington ์ด๊ฒ์ ๋ํด ์ด๋ค ์๊ฐ์ด ์์ต๋๊น? ์๋ง๋ ์ต์ํ ๊ตฌ์ฑ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
@adamdbradley์ https://github.com/driftyco/ionic/commit/8ebde73d0b8afac1bf1c1787c90a72a28a88bc3a์ ์ํด ์๊ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํธ์ง: ๋ ๋์ ์์ ์ if
์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
if (direction !== 'swap' && renderStart && renderEnd) {
Edit2: ์ ์ฌ์ ์ธ ๋ถ์์ฉ์ ์ ๊ฑฐํ๋ ๋ ๋์ ์์ ์ $timeout
ํธ์ถ์ ๋ค์์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์
๋๋ค.
ionic.requestAnimationFrame(onReflow);
ํจ๊ป PR์ ๋ณด๋ด๋๋ฆฝ๋๋ค.
์์ฃผ ์ํ์ด!
๋์๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
๊ณ ๋ง์ ์น๊ตฌ.
์๋ํ์ง ์์์ต๋๋ค... ionic-angular.js ํ์ผ์ ์
๋ฐ์ดํธํ์ง๋ง ์ด๊ธฐ ์๊ฐ ์ด๊ณผ ๊ฐ์ ๋๋ ค๋ ๋ณ๊ฒฝ ์ฌํญ์ด ํ์๋์ง ์์ต๋๋ค. ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น?
ํ์ ํ์์ค ๊น๋ฐ์์ ๊ฒฝ์ฐ ์ด ์์ ์ฌํญ์ https://forum.ionicframework.com/t/flickering-when-navigating-via-tabs-on-android/27281 ์ฌ์ฉ ํ์ง๋ง ์ด์ ๋ด์ฉ์ด ๊น๋ฐ์
๋๋ค.
๋ง์ง๋ง์ผ๋ก ์๋ํ์ง๋ง ๊ฐ ํญ์ ๋ํด ์ฒ์์ผ๋ก ํ ๋ฒ ๊น๋ฐ์ ๋๋ค. ์ด์ ๋ฅผ ์ ์ ์์ต๋๊น?
์ด ๋ฌธ์ ์ ๋ํ ์ถ์ ๊ณํ์ด ์์ต๋๊น? 1.2 ๋๋ 1.3?
์ต๊ทผ 1.2 ๋ฆด๋ฆฌ์ค์ ํฌํจ๋์ด ์์ต๋๋ค.
+1, ๋ค๋ฅธ ์๋ฃจ์ ์ด ์์ต๋๊น?
์์ฐ ์ด๊ฑด ์์ง ์งํ ์ค์ ๋๋ค.์ด..ํต์ฌ ํ์ด ์ด๊ฒ์ด ๋ฌด์์ธ์ง ์ ์๊ณ ์๋ค๊ณ ์๊ฐํ์ต๋๊น? ์ฐ๋ฆฌ๊ฐ ์คํ์ ์์ํ ์ ์๋ ์์ค ์ฝ๋์ ๋ํ ์ข์ ํฌ์ธํฐ๊ฐ ์๋ ์ฌ๋์ด ์์ต๋๊น?
1.2์์ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๊น? ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ์ปค๋ฐ์ด ์์์ต๋๋ค.
๋ฒ๊ทธ๋ ์ฌ์ ํ 1.2์์ 1.2.2์ ์์ต๋๋ค.
๋๋ ๋ค์ ์๋ํ๊ณ ๋ค์์ ๋ฃ์ผ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค.
ionic.requestAnimationFrame(onReflow);
๊ทธ๊ฐ ๋งํ๋ฏ์ด, ๊ทธ๋ฆฌ๊ณ ์๋๋๋ค :
$timeout(function() {
ionic.requestAnimationFrame(onReflow);
});
๋ถ๋ช ํ $timeout์ ๋ญ๊ฐ๋ฅผ ํ๊ณ ์์ต๋๋ค.
@mlynch ์๋ง๋ ์ด๊ฒ์ด ๋ฌด์์ ์ํ ๊ฒ์ธ์ง ๊ธฐ์ตํ์ญ๋๊น? https://github.com/driftyco/ionic/commit/d0246cf975bb4022eb890d3b0c28964e3065644c#diff -e25bdd32bda2f4f00f01c823ec86b1f3
๋ ๊นจ์ ๋ฏ ํฉ๋๋ค.
์๋ง๋ ์ด๊ฒ์ด ์ด์ ์ผ ๊ฒ์ ๋๋ค.
์ฝ๋๊ฐ $timeout์ ์ฌ์ฉํ์ฌ ๋๊ธฐ์ด์ ์๋ ๊ฒฝ์ฐ DOM์ด Angular์ ์ํด ์กฐ์๋ ํ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋ง๋ ํ(๊ฒฝ์ฐ์ ๋ฐ๋ผ ๊น๋ฐ์์ด ๋ฐ์ํ ์ ์์) ์คํ๋์ด์ผ ํฉ๋๋ค.
1.2.5 ๊ฒํ
๋ถํํ๋ ์ด๊ฒ์ #4782๋ฅผ ๊นจ๋จ๋ ธ๊ณ ์ด๋ก ์ธํด ๋๋๋ก ๋ท๋ชจ์ต์ด ์ ๋๋ก ์์ง์ด์ง ์์์ต๋๋ค. $timeout
์ ๊ฑฐํ๋ ๊ฒ์ ์ด์ ๋ํ ์๋ฃจ์
์ด ๋๋ฌด ๋จ์ํ ์ ์์ต๋๋ค.
์๊ฐ ์ด๊ณผ๋ฅผ ์ ๊ฑฐํด๋ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
+1
์ด๋ฐ ๋ฌธ์ ๋...
+1
+1
์ฐธ๊ณ , bower.json ์ ๋ฐ์ดํธ๋ ๋์์ด ๋์ง๋ง(์ฌ๋ฐ๋ฅธ ๊ฐ์กฐ ํ์) ์ธ๊ธ๋ ๋๋ก ์ฝ๊ฐ์ ์ง์ฐ์ด ์์ต๋๋ค.
{
"์ด๋ฆ": "HelloIonic",
"๋น๊ณต๊ฐ": "์ฐธ",
"devDependencies": {
"ionic": "driftyco/ionic-bower#1.7.12", //์ฌ๊ธฐ, ์
๋ฐ์ดํธ๋์๋์ง ํ์ธ
"aws-sdk-js": "~2.0.9",
"๋ถํธ์คํธ๋ฉ": "~3.2.0",
"platform.js": "ํ๋ซํผ#~1.3.1"
}
}
์ด์จ๋ ์ฝ๊ฐ์ ํ๋์๋ Android์์๋ง ๋ฐ์ํ๋ฉฐ 1์ด ๋ฏธ๋ง์ ๋๋ค.
๋๊ตฌ๋ ์ง 1.2.3 "copenhagen"
์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง ํ์ธํ ์ ์์ต๋๊น?
@mhartington @mlynch ๋ฒ์ 1.2.3์์๋ ์ฌ์ ํ ์๋ํ์ง ์๋ ์์ฑ์์ ํ์ธํ ์ ์์ต๋๋ค. ์ด ์ผ๋ จ์ ์คํฌ๋ฆฐ์ท์ ์ดํด๋ณด์ญ์์ค.
์ ๋ ๋จผ์ Bills ํญ์์ ๋ค์๊ณผ ๊ฐ์ด ์์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ฃธ๋ฉ์ดํธ ํญ์ ํญํ๋ฉด ๋ค์ ๋จ๊ณ๊ฐ ์ํ๋ฉ๋๋ค(๊น๋ฐ์).
์ด ๋ชจ๋ ๋จ๊ณ๋ฅผ ๊ฒฐํฉํ๋ฉด ํญ์ ์ ํํ ๋ ๋ฌด์๋ฌด์ํ ๊น๋ฐ์์ด ์์ฑ๋ฉ๋๋ค.
์ํฅ์ ๋ฐ๋ ๋ฒ๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด ๋ค์ ๋น๋์ค๋ฅผ ๋ณด์ญ์์ค.
https://dl.dropboxusercontent.com/u/97539058/Bugs/tabs-bug.mp4
์ด๋ด, ๋ด ๋ฒ๊ทธ๊ฐ ๋ด ์์ฉ ํ๋ก๊ทธ๋จ์์ SQLite๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ํผ๋์ ๋๋ ค ์ฃ์กํฉ๋๋ค.
+1
+1
+1
ํ์์์ ๋ฌธ์ ์ธ๋ฏ
๋ฌธ์ ๋ ๋๋ฅผ ์ํด ์ฌ๋ผ์ก์ต๋๋ค! ์ด ๋ฌธ์ ๋ ํญ์ ๊ตฌ์ถํ ๋ฐฉ์๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค!
ํญ ๋ด๋ถ ํ์๋ ์ข์ ๋ฐฉ๋ฒ์ผ๋ก ๋น๋ํ๋์ง ํ์ธํ์ญ์์ค. ์ปจํธ๋กค๋ฌ๋ฅผ ๋๋ด์ฃผ์ธ์ ๋ถ๋ชจ ==> ์์
๋ ์ด์ ํฐ์ ํ๋์๊ฐ ์์ต๋๋ค
@princefr ์์ธํ
iOS์ ๊ฒฝ์ฐ ionic.bundle.js ๋ผ์ธ 47715 ๋ฐ 47750์์ css[ionic.CSS.TRANSITION_DURATION]์ css.WebkitTransition์ผ๋ก ๋ฐ๊ฟ์ผ ํ์ต๋๋ค.
`// iOS ์ ํ
// -----------------------
provider.transitions.views.ios = function(enteringEle, LeaveEle, ๋ฐฉํฅ, shouldAnimate) {
function setStyles(ele, opacity, x, boxShadowOpacity) {
var css = {};
css.WebkitTransition = d.shouldAnimate ? '' : 0;
css.opacity = opacity;
if (boxShadowOpacity > -1) {
css.boxShadow = '0 0 10px rgba(0,0,0,' + (d.shouldAnimate ? boxShadowOpacity * 0.45 : 0.3) + ')';
}
css[ionic.CSS.TRANSFORM] = 'translate3d(' + x + '%,0,0)';
ionic.DomUtil.cachedStyles(ele, css);
}
var d = {
run: function(step) {
if (direction == 'forward') {
setStyles(enteringEle, 1, (1 - step) * 99, 1 - step); // starting at 98% prevents a flicker
setStyles(leavingEle, (1 - 0.1 * step), step * -33, -1);
} else if (direction == 'back') {
setStyles(enteringEle, (1 - 0.1 * (1 - step)), (1 - step) * -33, -1);
setStyles(leavingEle, 1, step * 100, 1 - step);
} else {
// swap, enter, exit
setStyles(enteringEle, 1, 0, -1);
setStyles(leavingEle, 0, 0, -1);
}
},
shouldAnimate: shouldAnimate && (direction == 'forward' || direction == 'back')
};
return d;
};
provider.transitions.navBar.ios = function(EnteringHeaderBar, LeaveHeaderBar, ๋ฐฉํฅ, shouldAnimate) {
function setStyles(ctrl, opacity, titleX, backTextX) {
var css = {};
css.WebkitTransition = d.shouldAnimate ? '' : '0ms';
css.opacity = opacity === 1 ? '' : opacity;
ctrl.setCss('buttons-left', css);
ctrl.setCss('buttons-right', css);
ctrl.setCss('back-button', css);
css[ionic.CSS.TRANSFORM] = 'translate3d(' + backTextX + 'px,0,0)';
ctrl.setCss('back-text', css);
css[ionic.CSS.TRANSFORM] = 'translate3d(' + titleX + 'px,0,0)';
ctrl.setCss('title', css);
}
function enter(ctrlA, ctrlB, step) {
if (!ctrlA || !ctrlB) return;
var titleX = (ctrlA.titleTextX() + ctrlA.titleWidth()) * (1 - step);
var backTextX = (ctrlB && (ctrlB.titleTextX() - ctrlA.backButtonTextLeft()) * (1 - step)) || 0;
setStyles(ctrlA, step, titleX, backTextX);
}
function leave(ctrlA, ctrlB, step) {
if (!ctrlA || !ctrlB) return;
var titleX = (-(ctrlA.titleTextX() - ctrlB.backButtonTextLeft()) - (ctrlA.titleLeftRight())) * step;
setStyles(ctrlA, 1 - step, titleX, 0);
}
var d = {
run: function(step) {
var enteringHeaderCtrl = enteringHeaderBar.controller();
var leavingHeaderCtrl = leavingHeaderBar && leavingHeaderBar.controller();
if (d.direction == 'back') {
leave(enteringHeaderCtrl, leavingHeaderCtrl, 1 - step);
enter(leavingHeaderCtrl, enteringHeaderCtrl, 1 - step);
} else {
enter(enteringHeaderCtrl, leavingHeaderCtrl, step);
leave(leavingHeaderCtrl, enteringHeaderCtrl, step);
}
},
direction: direction,
shouldAnimate: shouldAnimate && (direction == 'forward' || direction == 'back')
};
return d;
};`
์ด ๋ผ์ธ์ https://github.com/driftyco/ionic/blob/master/js/angular/service/viewSwitcher.js#L142 ๋ก ๋ณ๊ฒฝํ์ ๋ ์์ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
callback && ionic.requestAnimationFrame(callback);
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ธ์ง ํ์คํ์ง ์์ต๋๋ค.
์ด๊ฒ์ iOS์ ์ผ๋ถ ๋ฆด๋ฆฌ์ค์์๋ ๋ฐ์ํฉ๋๊น(๋ณด๊ณ ์๊ฐ Android ๋ฆด๋ฆฌ์ค์ ์์์ ๊ธฐ์ต)?
๋ณด๋ธ ์ฌ๋: Abdul Wahab [mailto:[email protected]]
๋ณด๋ธ ๋ ์ง: 2016๋
2์ 10์ผ ์์์ผ ์คํ 9์ 59๋ถ
๋ฐ๋ ์ฌ๋:driftyco/ionic [email protected]
์ฐธ์กฐ: David Lloyd [email protected]
์ ๋ชฉ: Re: [ionic] ๋ฒ๊ทธ: Android์์ ํญ ๊ฐ์ ์ ํํ ๋ ํฐ์ ํ๋์๊ฐ ํ์๋จ(#3907)
iOS์ ๊ฒฝ์ฐ ionic.bundle.js ๋ผ์ธ 47715 ๋ฐ 47750์์ css[ionic.CSS.TRANSITION_DURATION]์ css.WebkitTransition์ผ๋ก ๋ฐ๊ฟ์ผ ํ์ต๋๋ค.
`// iOS ์ ํ
// -----------------------
provider.transitions.views.ios = function(enteringEle, LeaveEle, ๋ฐฉํฅ, shouldAnimate) {
ํจ์ setStyles(ele, ๋ถํฌ๋ช
๋, x, boxShadowOpacity) {
var CSS = {};
css.WebkitTransition = d.shouldAnimate? '' : 0;
css.opacity = ๋ถํฌ๋ช
๋;
if (boxShadowOpacity > -1) {
css.boxShadow = '0 0 10px rgba(0,0,0,' + (d.shouldAnimate ? boxShadowOpacity * 0.45 : 0.3) + ')';
}
css[ionic.CSS.TRANSFORM] = 'translate3d(' + x + '%,0,0)';
ionic.DomUtil.cachedStyles(ele, CSS);
}
var d = {
์คํ: ํจ์(๋จ๊ณ) {
if (๋ฐฉํฅ == '์์ผ๋ก') {
setStyles(enteringEle, 1, (1 - ๋จ๊ณ) * 99, 1 - ๋จ๊ณ); // 98%์์ ์์ํ์ฌ ๊น๋ฐ์์ ๋ฐฉ์งํฉ๋๋ค.
setStyles(leavingEle, (1 - 0.1 * ๋จ๊ณ), ๋จ๊ณ * -33, -1);
} else if (direction == 'back') {
setStyles(enteringEle, (1 - 0.1 * (1 - step)), (1 - step) * -33, -1);
setStyles(leavingEle, 1, step * 100, 1 - step);
} else {
// swap, enter, exit
setStyles(enteringEle, 1, 0, -1);
setStyles(leavingEle, 0, 0, -1);
}
},
shouldAnimate: shouldAnimate && (๋ฐฉํฅ == '์์ผ๋ก' || ๋ฐฉํฅ == '๋ค๋ก')
};
๋ฆฌํด d;
};
provider.transitions.navBar.ios = function(EnteringHeaderBar, LeaveHeaderBar, ๋ฐฉํฅ, shouldAnimate) {
ํจ์ setStyles(ctrl, ๋ถํฌ๋ช
๋, titleX, backTextX) {
var CSS = {};
css.WebkitTransition = d.shouldAnimate? '' : '0ms';
css.opacity = ๋ถํฌ๋ช
๋ === 1 ? '' : ๋ถํฌ๋ช
๋;
ctrl.setCss('์ผ์ชฝ ๋ฒํผ', CSS);
ctrl.setCss('์ค๋ฅธ์ชฝ ๋ฒํผ', CSS);
ctrl.setCss('๋ค๋ก ๋ฒํผ', CSS);
css[ionic.CSS.TRANSFORM] = 'translate3d(' + backTextX + 'px,0,0)';
ctrl.setCss('๋ค๋ก ํ
์คํธ', CSS);
css[ionic.CSS.TRANSFORM] = 'translate3d(' + titleX + 'px,0,0)';
ctrl.setCss('์ ๋ชฉ', CSS);
}
ํจ์ ์
๋ ฅ(ctrlA, ctrlB, ๋จ๊ณ) {
if (!ctrlA || !ctrlB) ๋ฆฌํด;
var titleX = (ctrlA.titleTextX() + ctrlA.titleWidth()) * (1 - ๋จ๊ณ);
var backTextX = (ctrlB && (ctrlB.titleTextX() - ctrlA.backButtonTextLeft()) * (1 - ๋จ๊ณ)) || 0;
setStyles(ctrlA, ๋จ๊ณ, titleX, backTextX);
}
ํจ์ ๋ ๋๊ธฐ(ctrlA, ctrlB, ๋จ๊ณ) {
if (!ctrlA || !ctrlB) ๋ฆฌํด;
var titleX = (-(ctrlA.titleTextX() - ctrlB.backButtonTextLeft()) - (ctrlA.titleLeftRight())) * ๋จ๊ณ;
setStyles(ctrlA, 1 - ๋จ๊ณ, ์ ๋ชฉX, 0);
}
var d = {
์คํ: ํจ์(๋จ๊ณ) {
var enterHeaderCtrl = enterHeaderBar.controller();
var ๋ ๋๋ ํค๋Ctrl = ๋ ๋๋ ํค๋๋ฐ && ๋ ๋๋ ํค๋๋ฐ.์ปจํธ๋กค๋ฌ();
if (d.direction == '๋ค๋ก') {
๋ ๋๊ธฐ(EnteringHeaderCtrl, LeaveHeaderCtrl, 1 - ๋จ๊ณ);
enter(leavingHeaderCtrl, enterHeaderCtrl, 1 - ๋จ๊ณ);
} ๋ ๋ค๋ฅธ {
์ํฐ(ํค๋Ctrl ์
๋ ฅ, ํค๋Ctrl ๋ ๋๊ธฐ, ๋จ๊ณ);
๋ ๋๊ธฐ(leavingHeaderCtrl, enterHeaderCtrl, ๋จ๊ณ);
}
},
๋ฐฉํฅ: ๋ฐฉํฅ,
shouldAnimate: shouldAnimate && (๋ฐฉํฅ == '์์ผ๋ก' || ๋ฐฉํฅ == '๋ค๋ก')
};
๋ฆฌํด d;
};`
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub https://github.com/driftyco/ionic/issues/3907#issuecomment -182324500 ์์ https://github.com/notifications/beacon/ABHsBD1Sp3tXsq8707UTfdVHgqSlxI0zks5pixaSgaJpZM4E82pl.gif
+1
์๋๋ก์ด๋์์ ๊น๋ฐ..
1+
+1
์ถ์ถ ๋ฐ ๋ ๋๋ง์ด ์ํํ๊ฒ ์งํ๋๊ธฐ ์ ์ ํ์ด์ง๊ฐ ์บ์๋๋๋ก " ์ํ "์์ " ์บ์ : true "
@Harish-here ์ฒ์ ํด๋ณด๋ ๊ฑด ์ด๋?
์, ์บ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๋ง ์ข์ ์๊ฐ์ด ์๋๋๋ค. ์ด๋ฌํ ๋ชฉ์ ์ ์ํด์๋ง true์ ๋๋ค.
@Harish-์ฌ๊ธฐ . . ๋ค๋ฅธ ํ์ด์ง์ ๋ํด ๋์ผํ ์ํ๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ด ์์ต๋๋ค. ์ฆ, $state ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์ธ๋ถ ์ ๋ณด ๋ณด๊ธฐ์
๋๋ค. ๋ด์ฉ์ด ๋ค๋ฅธ ๋์ผํ ๋ณด๊ธฐ์ด๋ฏ๋ก cache:false๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. :)
๊ทธ๋ฆฌ๊ณ ์ด ํน์ ๋ฌธ์ ์ ๋ํด์๋ ์ข์ ์๊ฐ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
1.2.4-nightly-1917์ ์คํํ๋ ๋์ผํ ๋ฌธ์
+1
@princefr - ์, ์ด ๋ฌธ์ ๋ฅผ ์ํํ๊ธฐ ์ํด ํญ์ ์ ์ ํ ๋งํฌ์ ์ด ๋ฌด์์ธ์ง ์์ธํ
@princefr ํญ ๊ตฌ์กฐ์ ๋ํด ์์ธํ
์ด๊ฒ์ ์ฌ์ ํ โโ๋์๊ฒ ๋ฌธ์ ์ด๋ฉฐ ๋งค์ฐ ์ค๋ง ์ค๋ฝ์ต๋๋ค. ์ด๋ค ์์ง์์ด๋ ์ดํด๋ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น?
+1
+1
๋ด์ผ์ ์ด๊ฒ๋ถํฐ ์ดํด๋ณด์ธ์ ์ฌ๋ฌ๋ถ! :์ด๋ฅผ ๋๋ฌ๋ด๊ณ ์๋ค:
์ค๋ ๋ฐค ๋ฆ๊ฒ ์ฌ๊ธฐ์ ๋งํฌํ iOS ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฌํํ ์ ์์์ต๋๋ค.
@mhartington ๊ฐ์ฌํฉ๋๋ค!
์ปจํ ์คํธ๋ฅผ ๋ ์ถ๊ฐํ๊ธฐ ์ํด ์ ์ํฉ์์ ๋ค์๊ณผ ๊ฐ์ ๋ฒ๊ทธ๊ฐ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
์์ธ.html
<ion-nav-view></ion-nav-view>
๋ณด๊ธฐ-1.html
<ANY ELEMENT>Something</ANY ELEMENT><ion-nav-view></ion-nav-view>
ํ์ ๋ณด๊ธฐ-1.html
<ANY></ANY>
๊ทธ๋ฌ๋ view-1.html์์ <ANY ELEMENT>
๋ฅผ ์ ๊ฑฐํ์ ๋ ์กด์ฌํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์ ๊ฒฝ์ฐ์๋ ๋ถ๋ชจ ์ํ ์ฝํ ์ธ ๋ฅผ ์์ ํ ๊ต์ฒดํ์ง ์๊ณ ๋ ๋ถ๋ชจ ์ํ ๋ด๋ถ์ ์์ ์ํ๋ฅผ ํ์ํ๋ ์ํ๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋๋ ui-view/ion-view/ion-nav-view/ion-tabs/ion-pane/etc์ ๋ชจ๋ ๋ฐฉ์์ ์๋ํ์ต๋๋ค. ์ ํ ํจ๊ณผ๊ฐ ์์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ๋์ผํ ๋ฒ๊ทธ๋ฅผ ์ค๋ช ํ์ง๋ง iOS์์๋ https://github.com/driftyco/ionic/issues/5888์ ๋๋ค.
@mhartington ํ์ ์ฑ์ผ๋ก ํ ์คํธํ ์ ์๋์? ๋์ @brandy ๋ ํญ์ ์ ํํ ๋ ์ฝ๊ฐ์ ํ๋์๋ฅผ ์ฌํํ ์ ์์์ต๋๋ค. ์ด๊ฒ์ ์ค์ ์ฅ์น๊ฐ ์๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
#5888์ ๋ฒ๊ทธ๋ ionic2์ ๋ํ ๊ฒ์ด์ง๋ง ์ฝ๋ ๊ธฐ๋ฐ์ด ๋์ผํ ๋ฒ๊ทธ๊ฐ ๋ ๋งํผ ์ถฉ๋ถํ ์ ์ฌํ๋ค๊ณ ํ์ ํ ์ ์์ต๋๋ค.
ํค์ด yall, ์ธ๋ด์ฌ์ ๊ฐ์ ธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ ๋ง ๊ฐ์ฌํฉ๋๋ค :์ค๋ง์ผ:
๋ฐ๋ผ์ ์ฌ๋ฌผ์ ์ดํด๋ณด๋ฉด ionic 1.2.4์์ iOS์ Android ๋ชจ๋์ ์ํฅ์ ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ง์ต๋๊น?
๋ํ ํญ ์คํํฐ ์ฑ์ผ๋ก ์ด๊ฒ์ ์ฌํํ ์ ์๋ ์ฌ๋์ด ์์ต๋๊น?
@mhartington ํญ ์คํํฐ ์ฑ์ ์์ต๋๋ค. ์์ฃผ ์ฃผ์ ๊น๊ฒ ๊ด์ฐฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋ํ https://github.com/driftyco/ionic/pull/4654 ์์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ์ง๋ง ๋ถ๋ช ํ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ผ๋ฉฐ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ฉด ๋ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ฒ์ํ ๋์์์์ ํ์ธํ ์ ์์ต๋๋ค. https://www.youtube.com/watch?v=_ja8a08iSPE&feature=youtu.be ์ ํญ์ด ํ์๋๋ ๋์ ๋งค์ฐ ์งง์ ํฐ์ ํ๋์(1ํ๋ ์, ๋งค์ฐ ๋น ๋ฆ).
@andreialecu ์ข์, ๊ทธ๊ฒ๋ ๋ณด๊ณ ,
๊ฐ์ ํด๋ฆฝ, ์๋๊ฐ ๋ง์ด ๋๋ ค์ก์ต๋๋ค.
PR์ ๋ณด๋ฉด์ ๋ฌด์์ ํ ์ ์๋์ง ์์๋ณด๊ณ ๋ค๋ฅธ ์ผ์ ๋ฐฉํดํ์ง ์๋๋ก ํฉ๋๋ค.
๋ชจ๋ ์๋ ! ๊ทธ๋์ ์ด ๋ถ๋ถ์์ ์ด๋ ์ ๋ ์ฑ๊ณตํ ์ ์์๋ ๊ฒ ๊ฐ์์. ๋ด ํ ์คํธ์์ ์ข์ ๋ณด์ด๋ PR์ ์ด์์ง๋ง ๋จผ์ ๊ทํ์ ํผ๋๋ฐฑ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
viewFlicker ๋ถ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค.
https://github.com/driftyco/ionic/pull/5937
์ฝ๋๋ฅผ ํ๊ณ , ์์ค์์ Ionic์ ๋น๋ํ๊ณ , ์ฑ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ ์คํธํ๋ ๋ฐ ์ ๊ฒฝ ์ฐ์ง ์๋๋ค๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ณ ์ด ๋ฒ๊ทธ๋ฅผ ์ ๊ฑฐํ ์ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.shipit:
์์ฒญ๋. ์ด๊ฒ์ ์๋๋ก์ด๋ ์ ์ฉ ์ฌ์ฐ์ ๋๊น, ์๋๋ฉด iOS๋ ๋ ์ข์ ๋ณด์ผ ๊ฒ์ ๋๊น?
@ctcampbell ์๋๋ก์ด๋ ATM. ๋ด ํ ์คํธ์์ iOS์์ ๊น๋ฐ์์ ์ ๋ฐํ ์ ์์์ต๋๋ค.
๋ค์์ PR ์์ฐ ๋์์์ ๋๋ค.
+1
@jordantomax ์ด๊ฒ์ PR์ด ์ ์๋ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น? :์ด๋ฅผ ๋๋ฌ๋ด๊ณ ์๋ค:
์ฃ์กํฉ๋๋ค. ํผ๋๋ฅผ ๊ตฌ๋ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋๋ ํ ์คํธํ ์ ์์ต๋๋ค. ์ฌ์ฉํ๊ธฐ ์ํด ๋ฌด์ธ๊ฐ๋ฅผ ์ปดํ์ผํด์ผ ํฉ๋๊น? ์ปค๋ฐ์ด ๋ฆด๋ฆฌ์ค์ ์ํฅ์ ๋ฏธ์น์ง ์์์์ ์ ์ ์์ต๋๋ค.
์์
๋ค์ ๋จ๊ณ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
git clone https://github.com/driftyco/ionic.git
cd ionic
git checkout viewFlicker
npm install
gulp build
๊ทธ๋ฆฌ๊ณ dist/js/ionic.bundle.js
์ปดํ์ผ๋ ์ฝ๋๊ฐ ์์ด์ผ ํฉ๋๋ค.
ํด๋น ์ฝ๋๋ฅผ ํ
์คํธ ํ๋ก์ ํธ์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐํ๊ณ ์ฌ์ฉํด ๋ณผ ์ ์์ด์ผ ํฉ๋๋ค.
ํ ์คํธ ํญ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋๋ ๋ด ์ฑ์์ ๊น๋ฐ์ด๋ ๋ฐ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํญ๊ณผ ๋ฉ๋ด๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ ํญ์ด ํน์ ํ์ด์ง์๋ง ๋ํ๋ฉ๋๋ค. ๋์์์ผ๋ก ๋ณด์ฌ๋๋ฆฌ๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒ ํด์ผ ํ๋์?
๋์ ๋ด๊ฐ ๋ณต์ ํ๊ณ ํ
์คํธํ ์ ์๋ ์ต์ํ์ codepen ๋๋ git repo๋ฅผ ๋ง๋ค ์ ์์ต๋๊น?
๊ทํ์ ์ฑ๊ณผ ์ ์ฌํ ์ค์
์ข์ ์๊ฐ. ์ค๋ ๋ฐค์ด๋ ๋ด์ผ ์์นจ์ ๊ทธ๋ ๊ฒ ํ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค. ๋น์ ์ ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@mhartington ๋ฐฉ๊ธ ๋ด ์ฑ์์ ํ ์คํธ
Android N ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ฅผ ์คํํ๋ Nexus 6, 6.0.1์ ์คํํ๋ Nexus 7 2013, 5.1์ ์คํํ๋ Moto X 2014 ๋ฐ 4.4.4๋ฅผ ์คํํ๋ Nexus 7 2013์์ ํญ ์คํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ฌํญ์ ํ ์คํธํ์ง๋ง ๊น๋ฐ์์ด ํ์๋์ง ์์์ต๋๋ค. ๊ทธ ์ฅ์น ์ค ํ๋. ์์ฒญ๋ !
@jordantomax ๊ทธ ์๋ฅผ ๋ชจ์ผ๋ ๋ฐ ํ์ด์ด ์์ต๋๊น?
@mhartington ์ฃ์กํฉ๋๋ค, ์์ ํ ๋ช์
@mhartington ๋ฐฉ๊ธ ๋น๋ ์ค์ธ ์ฑ์์ ์ด๊ฒ์ ํ ์คํธํ์ผ๋ฉฐ Android ๋ฐ iPhone์ #5937๋ก ์์ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@jordantomax , ์๋ฅผ ๋ค์ด๋ณผ ๊ธฐํ๊ฐ ์์๋์?
๊ฐ์ฌ ํด์,
๋จ
์๋ ํ์ธ์,
์ด ์์ ์ฌํญ์ ์ ์๋ํ์ง๋ง ๊ธฐ๋ณธ ํ์ด์ง ์ ํ ํ๋ฌ๊ทธ์ธ์ด ์ ๋๋ก ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค... ์ด ์์ ์ฌํญ์ ์ ์ฉํ ํ ์ ํ์ด ๋ฏธ์น ์ง์ ํ๊ณ ์์ต๋๋ค. ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ์๊ฐํ์ญ๋๊น?
@tgensol ์ด ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ธ์. ์ด ์์ ํ๋ก๊ทธ๋จ๊ณผ ์ ์๋ํฉ๋๋ค!
๋ชจ๋๋ค ์๋ ! ๋ด ํ ์คํธ๋ฅผ ํตํด ๋ณด์ด๋ ๊ฒ์ฒ๋ผ ์์ ์ฌํญ์ ํ ์คํธํ๋ ์ฌ๋ฌ๋ถ์ด ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก ์ง๊ธ์ ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ณ ์งํํ๊ฒ ์ต๋๋ค. @jordantomax ํด๋น ํ ์คํธ๋ฅผ ํจ๊ป ํ ๊ธฐํ๊ฐ ์๋ค๋ฉด ์์ ๋กญ๊ฒ ๊ฒ์ํด ์ฃผ์๋ฉด ๊ธฐ๊บผ์ด ๋ค์ ์ด๊ฒ ์ต๋๋ค(:. ๋ํ @tgensol ์์ ์๋ฃจ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ผ๋ฉด ๋ฒ๊ทธ ์๊ฐ์ ๋ํด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ด์ด ์ฃผ์๊ฒ ์ต๋๊น? ๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค!
ionic repo์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ์ด๊ฒ์ ์ปดํ์ผํ๊ณ ๋น๋ํ๋ ๋ฐฉ๋ฒ
1.x
์ง์ ์ ์ด์ Ionic 1.3.1
์
๋๋ค. ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ ๋ถ๊ธฐ๋ฅผ ์ฒดํฌ์์ํ๋ฉด gulp build
๋ฅผ ์คํํ์ฌ ๋ฐฐํฌ ๊ฐ๋ฅํ ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
๊ฐ์ฌ ํด์,
๋จ
๊ฐ์ฌ ํด์. ์ด๋ฏธ ์๋์ผ๋ก ๋ฐฐํฌํ์ ๋ค์ด๋ก๋ํ์ต๋๋ค :D
+1
๋๋ ์ด๊ฒ์ ๊ณ ์ณค๋ค. ์ด๊ฒ์ ionic view update ionic bar bevavior: ๋ค์ด๊ฐ๊ธฐ ์ ์ ์์ฑ๋ ์ ๋ง๋์ ์ด์ ๋ง๋(ํ์ฌ)๋ฅผ ์จ๊ธฐ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ๋ฐ์ํฉ๋๋ค. ๊น๋ฐ์ ๋๋ค. ํด๊ฒฐ์ฑ ์ ์ด๋ฒคํธ ์ ๋ ฅ ํ ํ์ฌ ๋ง๋ ์จ๊ธฐ๊ธฐ๋ฅผ ์ฐ๊ธฐํ๋ ๊ฒ์ ๋๋ค. ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ ์ ์๊ฒ ํธ์ง๋ฅผ ๋ณด๋ด์ฃผ์ญ์์ค.
@smcreator ์ฝ๋ ์กฐ๊ฐ์ ๊ณต์ ํ ์ ์์ต๋๊น?
๋๋ ์ฌ์ ํ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค .... ๋ชจ๋ ์ฝ๋ ์ค ๋ํซ ๊ฐ์ฌํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์ต๊ทผ ionic ๋ฒ์ ์์ ์์ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ @princefr ์ ์๋ต์ด tabs.html
ํ์ผ์ ์๋จ์๋ง ion-nav-bar
์ถ๊ฐํ๋ ๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
<ion-nav-bar class="my-custom-bar">
<ion-nav-back-button class="button-clear">
<i class="button button-icon ion-android-arrow-back" ng-click="vm.goBack()"></i>
</ion-nav-back-button>
</ion-nav-bar>
<ion-tabs>
....
</ion-tabs>
๋ฌธ์ ๋ฅผ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ด ๋ฌธ์ ๋ ์๋ ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ ๋๊ธ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๊ฒจ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ์ ํ ์ต์ ๋ฒ์ ์ Ionic์์ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒฝ์ฐ ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ํ ํ๋ฆฟ์ด ์์ ํ ์ฑ์์ก๋์ง ํ์ธํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด์ผ์ ์ด๊ฒ๋ถํฐ ์ดํด๋ณด์ธ์ ์ฌ๋ฌ๋ถ! :์ด๋ฅผ ๋๋ฌ๋ด๊ณ ์๋ค: