Ionic-framework: ๋ฒ„๊ทธ: Android์—์„œ ํƒญ ๊ฐ„์— ์ „ํ™˜ํ•  ๋•Œ ํฐ์ƒ‰ ํ”Œ๋ž˜์‹œ๊ฐ€ ํ‘œ์‹œ๋จ

์— ๋งŒ๋“  2015๋…„ 06์›” 09์ผ  ยท  121์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ionic-team/ionic-framework

์œ ํ˜• : ๋ฒ„๊ทธ

ํ”Œ๋žซํผ : ์•ˆ๋“œ๋กœ์ด๋“œ 4.4 ์›น๋ทฐ

Android ํ”Œ๋žซํผ์—์„œ๋งŒ ํƒญ ๊ฐ„์— ์ „ํ™˜ํ•  ๋•Œ ์•ฑ์— ํฐ์ƒ‰ ํ”Œ๋ž˜์‹œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํšก๋‹จ๋ณด๋„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.ํฌ๋Ÿผ ๊ฒŒ์‹œ๋ฌผ http://forum.ionicframework.com/t/white-flash-appearing-when-switching-between-tabs-on-android-in-1-0-0-stable/24774

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚ด์ผ์€ ์ด๊ฒƒ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! :์ด๋ฅผ ๋“œ๋Ÿฌ๋‚ด๊ณ  ์›ƒ๋‹ค:

๋ชจ๋“  121 ๋Œ“๊ธ€

์ด ๋ฌธ์ œ์˜ ์ƒํƒœ์— ๋Œ€ํ•ด ๋ง์”€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

+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๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ , ๋‚ด ํ…Œ์ŠคํŠธ์—์„œ ๊ทธ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

https://youtu.be/_ja8a08iSPE

๋™์˜์ƒ์—์„œ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.. ํƒญ์„ ๋ฐ”๊พธ๋ฉด ํฐ์ƒ‰ ํ™”๋ฉด์ด ๊นœ๋ฐ•์ž…๋‹ˆ๋‹ค.. ๋ช‡ ๋ฐ€๋ฆฌ์ดˆ ๋™์•ˆ๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค... ๋ฐฐ๊ฒฝ์ƒ‰์„ ๋นจ๊ฐ•, ํŒŒ๋ž‘ ๋˜๋Š” ์–ด๋‘์šด ์ƒ‰์œผ๋กœ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด .

์‚ฌ๋ผ์ง€๋Š” ํƒ์ƒ‰ ๋ชจ์Œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋Š” ํƒญ์„ ์ „ํ™˜ํ•  ๋•Œ ์ž ๊น ๋‚˜ํƒ€๋‚˜๋Š” ํฐ์ƒ‰ ํ™”๋ฉด(์ด์˜จ ํ•จ๋Ÿ‰ ๊ฒฝ๊ณ„)์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
"์ƒํƒœ"์—์„œ "์ฑ„ํŒ…"์œผ๋กœ ์ฒ˜์Œ ์ „ํ™˜ํ•  ๋•Œ ๋น„๋””์˜ค์—์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ๋งค๋ฒˆ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

@mhartington ๋‚ด ์•ฑ(์Šฌ๋กœ์šฐ ๋ชจ์…˜)์— ๋™์˜์ƒ์„ ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
์กฐ์น˜๋ฅผ ์ทจํ•˜๊ณ  ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ณ  ์‹ถ์ง€๋งŒ ์ ์–ด๋„ ์‹œ์ž‘์ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์œ ํŠœ๋ธŒ ๋งํฌ : https://youtu.be/TTuNPlL6Fmg

๊ฐ์‚ฌ ํ•ด์š”.

์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ tabSelected ํ•จ์ˆ˜(ionTab ์ง€์‹œ๋ฌธ)์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ƒˆ ํƒญ์„ ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ์ด์ „ ํƒญ์„ ์ˆจ๊ธฐ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งŒ๋“  ์ด ๋”๋Ÿฌ์šด ํ•ดํ‚น์€ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ ์ ˆํ•œ ์ˆ˜์ •์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
$ionicViewSwitcher.viewEleIsActive(childElement, false);

ionic.bundle.js์˜ 55025ํ–‰

$timeout(function () {
 $ionicViewSwitcher.viewEleIsActive(childElement, false);
}, 100);

์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์•„์ด์˜ค๋‹‰, v1.0.1
  • ์ฝ”๋ฅด๋„๋ฐ” 5.3.3

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 ํƒญ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
screen shot 2016-01-19 at 2 05 26 pm

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฃธ๋ฉ”์ดํŠธ ํƒญ์„ ํƒญํ•˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค(๊นœ๋ฐ•์ž„).

  1. ์•ฑ์— ์ œ๋ชฉ์ด "์ฒญ๊ตฌ์„œ"๋ผ๊ณ  ํ‘œ์‹œ๋˜์ง€๋งŒ ์บ์‹œ๋œ "๋ฃธ๋ฉ”์ดํŠธ" ํƒญ์ด ํ‘œ์‹œ๋จ
    screen shot 2016-01-19 at 2 05 38 pm
  2. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์•ฑ์€ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ฑฐํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ "์ฒญ๊ตฌ์„œ" ์ œ๋ชฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
    screen shot 2016-01-19 at 2 05 48 pm
  3. ์•ฑ์— "๋ฃธ๋ฉ”์ดํŠธ" ์ฝ˜ํ…์ธ ๊ฐ€ ํ‘œ์‹œ๋จ
    screen shot 2016-01-19 at 2 05 59 pm
  4. ์•ฑ์ด "Roommates" ์ œ๋ชฉ์—์„œ ์‚ฌ๋ผ์ง
    screen shot 2016-01-19 at 2 06 15 pm

์ด ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ๊ฒฐํ•ฉํ•˜๋ฉด ํƒญ์„ ์ „ํ™˜ํ•  ๋•Œ ๋ฌด์‹œ๋ฌด์‹œํ•œ ๊นœ๋ฐ•์ž„์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋ฒ„๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋น„๋””์˜ค๋ฅผ ๋ณด์‹ญ์‹œ์˜ค.
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 ์ข‹์•„, ๊ทธ๊ฒƒ๋„ ๋ณด๊ณ ,

https://youtu.be/R5EafRKTst0

๊ฐ™์€ ํด๋ฆฝ, ์†๋„๊ฐ€ ๋งŽ์ด ๋Š๋ ค์กŒ์Šต๋‹ˆ๋‹ค.

PR์„ ๋ณด๋ฉด์„œ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ณ  ๋‹ค๋ฅธ ์ผ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‘ ์•ˆ๋…•! ๊ทธ๋ž˜์„œ ์ด ๋ถ€๋ถ„์—์„œ ์–ด๋Š ์ •๋„ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์š”. ๋‚ด ํ…Œ์ŠคํŠธ์—์„œ ์ข‹์•„ ๋ณด์ด๋Š” PR์„ ์—ด์—ˆ์ง€๋งŒ ๋จผ์ € ๊ท€ํ•˜์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

viewFlicker ๋ถ„๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/driftyco/ionic/pull/5937

์ฝ”๋“œ๋ฅผ ํ’€๊ณ , ์†Œ์Šค์—์„œ Ionic์„ ๋นŒ๋“œํ•˜๊ณ , ์•ฑ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ์ด ๋ฒ„๊ทธ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.shipit:

์—„์ฒญ๋‚œ. ์ด๊ฒƒ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ์ „์šฉ ์—ฌ์šฐ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด iOS๋„ ๋” ์ข‹์•„ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

@ctcampbell ์•ˆ๋“œ๋กœ์ด๋“œ ATM. ๋‚ด ํ…Œ์ŠคํŠธ์—์„œ iOS์—์„œ ๊นœ๋ฐ•์ž„์„ ์œ ๋ฐœํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ PR ์‹œ์—ฐ ๋™์˜์ƒ์ž…๋‹ˆ๋‹ค.

https://youtu.be/nWSuocu64FU

+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์—์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ํ…œํ”Œ๋ฆฟ์ด ์™„์ „ํžˆ ์ฑ„์›Œ์กŒ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰